Сборка 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
Другие вопросы по тегам