Подтвердить что ты не робот

Как скомпилировать Qt 5 под Windows или Linux, 32 или 64 бит, статический или динамический на Visual Studio или g++

Просто пост, чтобы помочь тем парням, которые этого пытаются сделать, поскольку у меня нет блога.

Это работает и для Linux. Не стесняйтесь редактировать и улучшать его.

4b9b3361

Ответ 1

Примечание: есть также другая статья, которую я написал для компиляции из источника GIT, здесь с помощью автоматического скрипта для Windows. Вы можете изменить его для Linux, как показано в этом посте.

Эта статья постоянно обновляется. Если это поможет вам, пожалуйста, дайте ему "большие пальцы", чтобы я мог знать, что это помогает людям и не бесполезно.

Если у вас есть какие-либо комментарии или вы нашли опечатки, сообщите мне, чтобы я мог их исправить.

Во-первых, не имеет значения, хотите ли вы скомпилировать 32- или 64-битную версию. Единственное отличие - это ярлык командной строки, который вы должны выбрать из Visual Studio, который будет инициализировать различные переменные среды.


Давайте начнем с этого:

  1. Загрузите и установите Perl: Ссылка для скачивания

  2. Загрузите и установите Python: Ссылка для скачивания

  3. Загрузите и установите Windows SDK (вероятно, не обязательно, но рекомендуется) Я использую Windows 8, так что это версия, которую я использовал: Ссылка для скачивания , В противном случае найдите подходящую версию для вашей Windows.

  4. Загрузите и установите DirectX SDK (возможно, необходимо, если вы хотите скомпилировать с OpenGL) Ссылка для скачивания

  5. Загрузите и распакуйте jom в какую-нибудь папку (не требуется для linux) (jom - это инструмент для компиляции вещей с VS параллельно, есть способ сделать это с помощью nmake, но я не знаком с ним) Ссылка для скачивания

  6. Загрузите Qt Opensource и распакуйте его, скажем, в C:\Qt\Qt5.6, так что теперь папку qtbase можно найти в C:\Qt\Qt5.6\qtbase.

  7. Только для Windows: ВЫ ДЕЙСТВИТЕЛЬНО ХОТИТЕ ЭТО ПОЛНОСТЬЮ СТАТИЧЕСКИ?

    Обычно, даже если вы выбираете компиляцию статической, сам компилятор не будет статически объединять свои библиотеки. Если вы хотите, чтобы ваш скомпилированный исходный код был полностью статичным по отношению к компилятору (Visual Studio), вы должны выполнить эту настройку в файлах QMAKE Qt.

    Перейдите к файлу (начиная с исходного каталога Qt), для версий выше 2012 года, просто используйте правильную версию везде (например, win32-msvc2015):

    • а. Для VS2012: qtbase\mkspecs\win32-msvc2012\qmake.conf

    • б. Для VS2010: qtbase\mkspecs\win32-msvc2010\qmake.conf

    • с. Для Qt 5.5.0 и более поздних версий (с любой версией VS): qtbase\mkspecs\common\msvc-desktop.conf

    и отредактируйте следующие строки

     QMAKE_CFLAGS_RELEASE    = -O2 -MD
     QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MD -Zi
     QMAKE_CFLAGS_DEBUG      = -Zi -MDd
    

    в

     QMAKE_CFLAGS_RELEASE    = -O2 -MT
     QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MT -Zi
     QMAKE_CFLAGS_DEBUG      = -Zi -MTd
    

Примечание: Qt 5. 6+ имеет параметр конфигурации -static-runtime, который сделает это за вас. Возможно, вам больше не придется делать это вручную для новых версий Qt.

  1. Запустите терминал в linux или в Windows, запустите терминалы Visual Studio (для которых установлены правильные переменные окружения или используйте vcvarsall.bat). Чтобы запустить командную строку и позволить ей сделать это автоматически, перейдите в Пуск, Все программы:

    Для версий Windows до 8: найдите папку Microsoft Visual Studio 201x и запустите командную строку (x86 для 32-разрядных или x64 для 64-разрядных).

    Для Windows 8: перейдите в "Пуск", введите "cmd", и все версии, доступные для командной строки, отобразятся. Выберите соответствующую версию Visual Studio (x86 для 32-битной или x64 для 64-битной).

Ниже приведен скриншот того, как это может выглядеть. Всегда стремитесь выбрать "Native", если он существует.

enter image description here

9.

  • Для VS2012: Выполните следующие команды для VS2012

     set QMAKESPEC=win32-msvc2012
     set QTDIR=C:\Qt\Qt5.7\qtbase
     set PATH=C:\Qt\Qt5.7\qtbase\bin;%PATH%
    

Примечание: Установка переменной среды QMAKESPEC считается неправильной для версий Qt 5. 8+. Не делайте этого для новых версий.

Для динамического связывания (требуется 8 ГБ)

configure -debug-and-release -opensource -platform win32-msvc2012 -opengl desktop

Для динамического связывания без примеров (требуется 2 ГБ)

configure -debug-and-release -opensource -platform win32-msvc2012 -opengl desktop -nomake examples -nomake tests

 Now the last command depends on what you want to compile. Just type configure -help and see what the available command-line parameters are.

Для статической ссылки (нужно 70 ГБ, да, это безумие, разумнее не делать примеров и демонстраций).

configure -debug-and-release -opensource -platform win32-msvc2012 -opengl desktop -static

Для статических ссылок без примеров (требуется 4 ГБ, больше смысла).

configure -debug-and-release -opensource -platform win32-msvc2012 -opengl desktop -static -nomake examples -nomake tests

Теперь это займет минуту или две, затем используйте jom следующим образом (при условии, что он извлечен в C:\Qt\jom):

C:\Qt\jom\jom.exe -j 50

50 обозначает количество ядер, которые вы хотите использовать. Я использую 50, потому что у меня 8 потоков, а использование только 8 не займет все ядра полностью, так что чем больше, тем лучше, но не слишком жадным, так как это может сделать вашу систему не реагирующей.

  • Для VS2010: Выполните следующие команды для VS2010

    set QMAKESPEC=win32-msvc2010
    set QTDIR=C:\Qt\Qt5.7\qtbase
    set PATH=C:\Qt\Qt5.7\qtbase\bin;%PATH%
    

Примечание: Установка переменной среды QMAKESPEC считается неправильной для версий Qt 5. 8+. Не делайте этого для новых версий. Для динамического связывания (требуется 8 ГБ)

configure -debug-and-release -opensource -platform win32-msvc2010 -opengl desktop

Для динамического связывания без примеров (требуется 2 ГБ)

configure -debug-and-release -opensource -platform win32-msvc2010 -opengl desktop -nomake examples -nomake tests

Последняя команда зависит от того, что вы хотите скомпилировать. Просто введите configure -help и посмотрите, какие доступны параметры командной строки. Для статических ссылок (нужно 70 ГБ, да, это безумие, разумнее не делать примеров и демонстраций).

configure -debug-and-release -opensource -platform win32-msvc2010 -opengl desktop -static

Для статических ссылок без примеров (требуется 4 ГБ, больше смысла).

configure -debug-and-release -opensource -platform win32-msvc2010 -opengl desktop -static -nomake examples -nomake tests

Теперь это займет минуту или две, затем используйте jom следующим образом (при условии, что он извлечен в C:\Qt\jom):

C:\Qt\jom\jom.exe -j 50

50 обозначает количество ядер, которые вы хотите использовать. Я использую 50, потому что у меня 8 потоков, а использование только 8 не займет все ядра полностью, так что чем больше, тем лучше, но не слишком жадным, так как это может сделать вашу систему не реагирующей.

  • Для Linux:

Есть одно небольшое отличие для Linux над Windows. Рекомендуется в Linux установить после компиляции. Честно говоря, это единственный способ, который работает для меня без проблем.

Выполните следующие команды для Linux. Не забудьте заменить пути на правильные пути вашего источника Qt

    export QMAKESPEC=linux-g++
    export QTDIR=/home/username/Qt5.7/qtbase
    export PATH=/home/username/Qt5.7/qtbase/bin:$PATH

Примечание: установка переменной среды QMAKESPEC считается неправильной для версий Qt 5. 8+. Не делайте этого для новых версий.

Допустим, вы хотите установить скомпилированный исходный код в каталог /home/username/Qt5.7-install. В этом случае добавьте следующее к любой из приведенных ниже команд настройки:

-prefix /home/username/Qt5.7-install

Предупреждение: НЕ устанавливайте в тот же исходный каталог. Это просто неправильно!

Если -prefix не установлен, будет выбран путь по умолчанию, который, как я думаю, будет /usr/local/. Я не люблю ничего устанавливать с помощью root. Я всегда предпочитаю установку в своей папке пользователя, чтобы не возникало проблем с обратимостью и обновлениями.

Ниже приведены различные возможные команды configure в зависимости от того, что вы хотите сделать.

Для динамического связывания (требуется 8 ГБ)

./configure -debug-and-release -opensource -platform linux-g++ -opengl desktop

Для динамического связывания без примеров (требуется 2 ГБ)

./configure -debug-and-release -opensource -platform linux-g++ -opengl desktop -nomake examples -nomake tests

Теперь последняя команда зависит от того, что вы хотите скомпилировать. Просто введите ./configure -help и посмотрите доступные параметры командной строки.

Для статических ссылок (нужно 70 ГБ, да, это безумие, разумнее не делать примеров и тестов).

./configure -debug-and-release -opensource -platform linux-g++ -opengl desktop -static

Для статических ссылок без примеров (требуется 4 ГБ, больше смысла).

./configure -debug-and-release -opensource -platform linux-g++ -opengl desktop -static -nomake examples -nomake tests

После завершения создания выполните команду make.

make -j 50

50 обозначает количество ядер, которые вы хотите использовать. Я использую 50, потому что у меня 8 потоков, а использование только 8 не займет все ядра полностью, так что чем больше, тем лучше, но не слишком жадным, так как это может сделать вашу систему не реагирующей.

  1. Подождите 2+ часов, пока компиляция не будет завершена.

  2. Убирайся! Вы можете сэкономить много места, используя эту команду для Windows: C:\Qt\jom\jom.exe clean И эту команду для Linux: make clean

Вы можете уменьшить размер скомпилированной папки с 8 ГБ до 2,5 ГБ (для динамической компоновки) и с 70 ГБ до 35 ГБ (для статической компоновки).


Чтобы использовать эту скомпилированную версию в Qt Creator:

  1. Запустить Qt Creator
  2. Перейти в Инструменты, Параметры
  3. Выберите Build и Run из списка слева.
  4. Перейдите на вкладку "Версии Qt"
  5. Нажмите "Добавить" и выберите qmake из папки, в которой находится ваша корзина qtbase, так сверху:

    C:\Qt\Qt5.7\qtbase\Bin\qmake.exe

(или для Linux выберите путь, по которому вы установили скомпилированный источник Qt, что эквивалентно /home/username/Qt5.7-install/qtbase/bin/qmake в этом руководстве)

  1. Нажмите "Применить"
  2. Перейти на вкладку "Наборы"
  3. Нажмите "Добавить"
  4. Дайте ему имя, выберите подходящий компилятор (ДЛЯ ВИЗУАЛЬНОЙ СТУДИИ EXPRESS НЕ ВЫБИРАЙТЕ amd64 ДЛЯ 64-БИТА, НЕ БУДЕТ РАБОТАТЬ, ВЫБЕРИТЕ x86_amd64 INSTEAD)
  5. Нажмите ОК.

Теперь просто откройте проект, и вы увидите, что он просит вас выбрать комплект, который вы добавили.

Наслаждаться :)