MXE (программа)

Материал из Циклопедии
Перейти к навигации Перейти к поиску
← другие значения
программное обеспечение
MXE
Файл:MXE-software.png
Разработчиккоманда 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,
  • skeleton.py — создаёт каркас make-файла, используется при добавлении в MXE новой библиотеки.

См. также[править]

Источники[править]

Ссылки[править]