Просто пост, чтобы помочь тем парням, которые этого пытаются сделать, поскольку у меня нет блога.
Это работает и для Linux. Не стесняйтесь редактировать и улучшать его.
Просто пост, чтобы помочь тем парням, которые этого пытаются сделать, поскольку у меня нет блога.
Это работает и для Linux. Не стесняйтесь редактировать и улучшать его.
Примечание: есть также другая статья, которую я написал для компиляции из источника GIT, здесь с помощью автоматического скрипта для Windows. Вы можете изменить его для Linux, как показано в этом посте.
Эта статья постоянно обновляется. Если это поможет вам, пожалуйста, дайте ему "большие пальцы", чтобы я мог знать, что это помогает людям и не бесполезно.
Если у вас есть какие-либо комментарии или вы нашли опечатки, сообщите мне, чтобы я мог их исправить.
Во-первых, не имеет значения, хотите ли вы скомпилировать 32- или 64-битную версию. Единственное отличие - это ярлык командной строки, который вы должны выбрать из Visual Studio, который будет инициализировать различные переменные среды.
Давайте начнем с этого:
Загрузите и установите Perl: Ссылка для скачивания
Загрузите и установите Python: Ссылка для скачивания
Загрузите и установите Windows SDK (вероятно, не обязательно, но рекомендуется) Я использую Windows 8, так что это версия, которую я использовал: Ссылка для скачивания , В противном случае найдите подходящую версию для вашей Windows.
Загрузите и установите DirectX SDK (возможно, необходимо, если вы хотите скомпилировать с OpenGL) Ссылка для скачивания
Загрузите и распакуйте jom в какую-нибудь папку (не требуется для linux) (jom - это инструмент для компиляции вещей с VS параллельно, есть способ сделать это с помощью nmake, но я не знаком с ним) Ссылка для скачивания
Загрузите Qt Opensource и распакуйте его, скажем, в C:\Qt\Qt5.6
, так что теперь папку qtbase
можно найти в C:\Qt\Qt5.6\qtbase
.
Только для 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.
Запустите терминал в 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", если он существует.
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 над 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 не займет все ядра полностью, так что чем больше, тем лучше, но не слишком жадным, так как это может сделать вашу систему не реагирующей.
Подождите 2+ часов, пока компиляция не будет завершена.
Убирайся! Вы можете сэкономить много места, используя эту команду для Windows: C:\Qt\jom\jom.exe clean
И эту команду для Linux: make clean
Вы можете уменьшить размер скомпилированной папки с 8 ГБ до 2,5 ГБ (для динамической компоновки) и с 70 ГБ до 35 ГБ (для статической компоновки).
Чтобы использовать эту скомпилированную версию в Qt Creator:
Нажмите "Добавить" и выберите qmake из папки, в которой находится ваша корзина qtbase, так сверху:
C:\Qt\Qt5.7\qtbase\Bin\qmake.exe
(или для Linux выберите путь, по которому вы установили скомпилированный источник Qt, что эквивалентно /home/username/Qt5.7-install/qtbase/bin/qmake
в этом руководстве)
Теперь просто откройте проект, и вы увидите, что он просит вас выбрать комплект, который вы добавили.
Наслаждаться :)