Сборка Qt 5 на Linux для Windows
Я хотел перенести мое приложение Qt 4 на использование Qt 5. Эти инструкции не выполнены из-за некоторых различий в том, как MXE создает Qt 5, в том числе из-за того, что он использует модульные tar-архивы Qt вместо одного большого tar-архива.
2 ответа
Вот полные инструкции:
Возьми:
git clone https://github.com/mxe/mxe.git
Установить зависимости сборки
Сборка Qt 5 для Windows:
cd mxe && make qtbase
Сначала будут построены его зависимости и инструменты кросс-сборки; Это займет менее часа на быстрой машине с приличным доступом в интернет.
Из-за новой модульной природы Qt 5 различные основные компоненты Qt теперь находятся в разных архивах. Тот, который выбран выше,
qtbase
, должен дать вам достаточно функциональности для запуска обычных приложений с графическим интерфейсом, и это все, что мне нужно для моего (маленького) приложения.Если вы хотите собрать весь Qt 5, вам нужно запустить
make qt5
(вместоmake qtbase
). Обратите внимание, что это займет намного больше времени, поэтому убедитесь, что вам нужны дополнительные функции.Перейдите в каталог вашего приложения и запустите инструмент генератора Qt Makefile:
<mxe root>/usr/bin/i686-w64-mingw32.static-qmake-qt5
Создайте свой проект:
make
Вы должны найти двоичный файл в каталоге./release:
wine release/foo.exe
Некоторые заметки:
Это было протестировано на моем 64-битном Debian 8 и, конечно, на Windows.
В результате получается 32-битный статический исполняемый файл, который будет хорошо работать в 64-битной Windows.
Если вы хотите 64-битный исполняемый файл, соберите Qt с:
make MXE_TARGETS=x86_64-w64-mingw32.static qtbase
По умолчанию
MXE_TARGETS
значениеi686-w64-mingw32.static
,
Команда git checkout неверна. Теперь вы должны получить их стабильную ветвь, иначе она не будет построена.
git clone https://github.com/mxe/mxe.git
должно быть...
git clone -b stable https://github.com/mxe/mxe.git
Это само по себе исправило все мои проблемы со сборкой qtbase, но не оставило папку qt, когда закончите. Тогда цель qt5 потерпит неудачу с неясными ошибками. Удалил папку, проверил стабильно и все заработало без нареканий.
Для тех, кто напрямую хочет 64-битную скомпилированную GCC10 Qt5 (например, для файловой системы lib), вот полные инструкции:
Возьми:
git clone https://github.com/mxe/mxe.git
Установить зависимости сборки
Соберите Qt 5 для Windows с активированным плагином gcc10 64bits:
cd mxe && make MXE_TARGETS=x86_64-w64-mingw32.shared MXE_PLUGIN_DIRS=plugins/gcc10 qt5
Через 2-3 часа сборки вы можете создать свое приложение (в каталоге.pro):
<mxe root>/usr/x86_64-w64-mingw32.shared/qt5/bin/qmake
Путь экспорта компилятора и сборка вашего проекта:
export PATH=<mxe root>/usr/bin:$PATH
make
Вы должны найти двоичный файл в каталоге./release и запустить его с помощью wine (или wine64):
wine foo.exe
Я действительно не знаю почему, но мне нужно было добавить каталог компилятора MXE в путь вина, потому что он не мог найти библиотеки DLL:
WINEPATH="<mxe root>/usr/x86_64-w64-mingw32.shared/bin/" wine64 foo.exe
Если вы попытаетесь это сделать, у меня все будет хорошо!
su
mv mxe /opt/mxe
cd /opt/mxe && make