MXE (программа)
Перейти к навигации
Перейти к поиску
программное обеспечение | |
MXE | |
Разработчик | команда MXE |
---|---|
Написана на | Makefile |
Операционная система | Linux, BSD, macOS |
Первый выпуск | 13 июня 2007[1][2] |
Последняя версия | build-2016-10-12 (12 октября 2016[3]) |
Лицензия | MIT |
Сайт | mxe.cc |
MXE (M cross environment) — это набор make-файлов, который компилирует кросс-компилятор и с его помощью кросс-компилирует многие свободные и открытые библиотеки.
История[править]
MXE начал разрабатываться в 2007 году.
Возможности[править]
- Предоставляет удобную среду для кросс-компиляции программ и библиотек предназначенных для запуска в ОС Windows.
- Среда спроектирована для запуска в любой UNIX-подобной операционной системе.
- Официально поддерживаются следующие цели сборки (используют win32-threads):
- i686-w64-mingw32.static
- i686-w64-mingw32.shared
- x86_64-w64-mingw32.static
- x86_64-w64-mingw32.shared
- Неофициально также доступны цели (используют posix-threads):
- i686-w64-mingw32.static.posix
- i686-w64-mingw32.shared.posix
- x86_64-w64-mingw32.static.posix
- x86_64-w64-mingw32.shared.posix
- Цели полностью изолированны друг от друга и для каждой существует своё поддерево /bin, /include, /lib.
- Предоставляет большой набор make-файлов для кросс-компиляции многих[4][5] свободных и открытых библиотек, таких как SDL и Qt, который:
- регулярно пополняется новыми библиотеками,
- поддерживается в актуальном состоянии (каждый make-файл содержит секцию для обеспечения проверки наличия новых версий на официальном сайте библиотеки).
- Предоставляет (если необходимо) набор патчей к исходным кодам библиотек с исправлениями для:
- обеспечения возможности кросс-компиляции,
- корректной работы в ОС Windows.
- Загружает архивы с исходным кодом библиотек и проверяет корректность загруженного при помощи хеш-сумм.
- Позволяет собирать только требуемое подмножество из доступного набора библиотек.
- При сборке библиотеки автоматически (на основе информации из make-файла) вычисляет и собирает все библиотеки от которых она зависит, а также их зависимости (любого уровня вложенности).
- Обновление набора make-файлов осуществляется командой git pull.
- Если за время прошедшее с предыдущей сборки произошли какие-то изменения в make-файлах библиотек или в make-файлах их зависимостей, то MXE автоматически рассчитает все варианты и из указанного в командной строке списка библиотек станет собирать заново только те цепочки библиотек, которые в этом нуждаются.
- Имеется возможность указать в файле настроек settings.mk набор избранных библиотек, так что после очередного выполнения git pull их можно будет пересобрать просто запустив команду make без аргументов.
- Предоставляет возможность распараллеливания сборки:
- параллельная сборка нескольких библиотек (и соответственно их зависимостей) одновременно (например: make boost qt --jobs=4),
- параллельная сборка каждой отдельной библиотеки (например: make boost qt JOBS=2),
- оба варианта указанные выше одновременно (например: make boost qt --jobs=4 JOBS=2).
- Поддерживает следующие системы сборки: Autotools, CMake, qmake, Makefile[6].
- Имеется возможность использовать уже скомпилированные библиотеки[7].
- Возможно использование уже скомпилированных библиотек в таких системах как Travis CI[8][9].
- Поддержка системы плагинов[10], предоставляющей:
- удобный способ собирать свои программы (расположив их make-файлы в директории mxe/plugins/apps) используя среду и библиотеки MXE, в качестве примера, добавлено несколько популярных программ: Clementine, KeePassX, qBittorrent, Tor и др.[11] (например make qbittorrent MXE_PLUGIN_DIRS=plugins/apps)
- возможность собирать библиотеки MXE или программы с помощью более новой версии компилятора GCC, или наоборот с помощью более старой версии в случае проблем с совместимостью (например make qbittorrent MXE_PLUGIN_DIRS="plugins/apps plugins/gcc6").
Вспомогательные утилиты[править]
MXE содержит набор вспомогательных утилит[12]:
- copydlldeps.sh — автоматически определяет и копирует в указанное место зависимости как 32-битных, так и 64-битных программ и DLL библиотек, набор опций доступен по команде copydlldeps.sh --help, примеры использования доступны в make-файлах программ в директории mxe/plugins/apps,
- install-deps — устанавливает все необходимые зависимости для работы MXE,
- make-shared-from-static — создаёт динамические (shared) библиотеки из статических (static) библиотек, удобна в том случае когда библиотека поддерживает только static цели,
- patch-tool-mxe — создаёт, экспортирует и импортирует патчи к исходным кодам библиотек и программ представленных в MXE,
- skeleton.py — создаёт каркас make-файла, используется при добавлении в MXE новой библиотеки.
См. также[править]
Источники[править]
- ↑ https://lists.debian.org/debian-embedded/2007/06/msg00007.html
- ↑ https://github.com/mxe/mxe/releases/tag/start
- ↑ https://github.com/mxe/mxe/releases/tag/build-2016-10-12
- ↑ http://mxe.cc/#packages
- ↑ http://mxe.cc/build-matrix.html
- ↑ http://mxe.cc/#tutorial
- ↑ http://pkg.mxe.cc/
- ↑ Пример использования MXE в Travis CI для проекта EiskaltDC++ (yml-файл)
- ↑ Пример использования MXE в Travis CI для проекта EiskaltDC++ (сборка)
- ↑ https://github.com/mxe/mxe/tree/master/plugins
- ↑ https://github.com/mxe/mxe/tree/master/plugins/apps
- ↑ https://github.com/mxe/mxe/tree/master/tools
Ссылки[править]
- Официальный сайт
- Руководство по установке и использованию
- Страница проекта на GitHub
- Скомпилированные пакеты
- Кросс-компиляция в MXE Krita
- Кросс-компиляция ITK используя MXE
- Кросс-компиляция OpenGeoSys на macOS
- Кросс-компиляция Fldigi
- Проекты которые официально используют MXE
- Страница проекта на Open Hub
- Mailing List