Ответ 1
Этот метод протестирован для работы с Visual Studio 2013. Предварительно созданные двоичные файлы с использованием Visual Studio 2012 и 2013 доступны здесь, включая OpenGL версии.
Шаг 1: Настройка
-
Загрузите и установите RapidEE здесь. RapidEE - редактор переменных среды Windows. Это чрезвычайно полезно для остальной части этого процесса (и просто в целом).
-
Установите SDK DirectX 11. Теперь он входит в состав Windows 8 SDK, поэтому вам сначала нужно установить DirectX 10 SDK, который вы можете получить здесь (но см. Предупреждение в следующем предложении). Если у вас установлен распространяемый пакет Visual С++ 2010, и вы, вероятно, это сделали (он автоматически устанавливается вместе с VS 2010), выполните шаги, описанные здесь, чтобы помочь с установкой DirectX 10. После установки SDK DirectX 10 загрузите и установите SDK Windows 8 здесь, в котором содержится SDK DirectX 11. Да, это боль, но если вы не знаете, что у вас есть SDK DirectX 11, сборка Qt завершится с ошибкой.
-
Установите Python для Windows (я слышал 2.6+, работая с 3.3) из Python.org или Anaconda Python.
-
Установите Perl для Windows из ActiveState.
Шаг 2: Создание (и построение) Qt5 (да, что означает Git)
-
Следуйте руководству по установке для Windows на веб-сайте qt-проекта.
Резюме
Чтобы обобщить детали из приведенной выше ссылки и из следующих примечаний (ПОЖАЛУЙСТА, СМОТРИТЕ СЛЕДУЮЩИЕ ПРИМЕЧАНИЯ, если у вас есть какие-либо ошибки, на них может быть дан ответ):
-
Удалите Avast (если у вас есть установленный), чтобы избежать ошибок сборки. Да, это буквально означает удалить. Удалите его на 100% из вашей системы. Деактивация не будет работать. См. Подробные примечания ниже.
-
Примечание для первых шагов: НЕ используйте SmartGit для первого
git
pull, ниже (если вы действительно не знаете, что делаете), поскольку значения по умолчанию для SmartGit будут тянуть все, и это не то, что вы хотите. -
Git для Windows должен быть установлен.
-
Определите, где вы хотите установить
Qt
, иcd
в каталог, который будет содержать новую установку, из любого окна командной строки. (Поскольку процесс настолько хрупкий и подвержен ошибкам, я лично положил его непосредственно вC:
, но это, вероятно, не обязательно). -
В приведенном выше каталоге выполните:
git clone git://gitorious.org/qt/qt5.git qt5
Это быстро. Как только вы закончите, вы должны быть на ветке "стабильная", но вы всегда можете запустить
git checkout stable
послеcd
ing в недавно созданный каталогqt5
, чтобы быть уверенным. Использованиеgit checkout 5.4.1
подтверждено для работы с 64-разрядным VS2013. -
Закройте окно текущего окна командной строки (если оно не является окном командной строки Visual Studio), прежде чем перейти к следующему шагу. Это делается для того, чтобы убедиться, что вы используете окно командной строки Visual Studio в следующих шагах.
-
Далее запустите 32-разрядную (x86) или 64-разрядную командную строку VS Tools (в зависимости от того, строя Qt5 как 32- или 64-разрядный). Чтобы получить доступ к этому, вы должны найти его в меню "Пуск" - перейдите к
Program Files
→[Microsoft] Visual Studio 2012/2013
→Visual Studio Tools
, и вы увидите его там с забавным именем; имя должно включать фразуNative Tools
; 32-битная версия будет иметьx86
в названии, а в 64-битной версии будетx64
в имени. -
cd
в вновь созданный каталогqt5
с шага выше. -
В командной строке Visual Studio необходимо загрузить оставшуюся часть подмодулей Qt:
perl ./init-repository --no-webkit
Требуется некоторое время, чтобы выполнить этот шаг, потому что он должен загружать много, но это не слишком страшно на приличном подключении.
-
Затем загрузите все оставшиеся ДОПОЛНИТЕЛЬНЫЕ подмодули, которые
init-repository
не загружается - SmartGit работает хорошо, только начиная с этого этапа (см. комментарии ниже). -
После завершения загрузки Qt следующая команда подготавливает среду сборки (ее также следует выполнить с помощью командной строки [32 | 64] VS Native Tools]:
configure -developer-build -opensource -confirm-license -mp -nomake examples -nomake tests -debug-and-release -c++11 -no-warnings-are-errors -platform win32-msvc2012
.Примечания к этой командной строке: параметр
c++11
может не понадобиться с помощью компилятора VS2012, но работает с VS2013;-no-warnings-are-errors
необходим, если вы получаете ошибки в 64-битной автоматической сборке ANGLE;-platform
автоматически устанавливается наwin32-msvc2012
, поэтому по умолчанию используется 32-разрядная сборка Qt, и -платформу, вероятно, не нужно предоставлять в командной строке (EVEN, если у вас установлены предыдущие версии VS). Для VS2013 используйте-platform win32-msvc2013
.Для выполнения этого шага требуется несколько минут, но это не так уж плохо.
-
Наконец, команда на самом деле строить Qt в системе (также выполняться в командной строке VS Native Tools) просто:
nmake
Ожидайте, что часы будут завершены. Если вы указали выходную папку с
-prefix
(см. Примечания ниже), используйтеnmake install
, в противном случае это.
-
ПРИМЕЧАНИЯ:
Общие примечания
Если вы сбиты с толку из вышеупомянутой документации, просто FYI, что библиотека ANGLE будет использоваться (по умолчанию) вместо OpenGL и поэтому вам нужно было установить DirectX 11 выше.
Убедитесь, что вы используйте командную строку VS Native Tools Command Prompt для запуска всех команд из приведенной выше ссылки (то есть perl .\init-repository --no-webkit
, configure
и nmake
). Вы будете использовать командную строку [32 | 64] бит (x86
или x64
), в зависимости от того, строите ли вы Qt как 32-разрядную или 64-разрядную. Если вы установите perl с открытой командной строкой (убедитесь, что она находится в PATH
), вам необходимо перезапустить командную строку для perl, которая будет распознана как команда.
При запуске "init-repository" (из шагов в приведенной выше ссылке), это не ясно из документации, но вы должны выполнить это через perl
; т.е. perl ./init-repository --no-webkit
. Однако команды configure
и nmake
вызываются напрямую.
Один очень полезный вариант для перехода на configure
- -mp
, что заставляет Qt строить на нескольких ядрах параллельно, значительно ускоряя (длительное) время сборки.
Чтобы указать выходную папку, добавьте команду -prefix [outfolder]
в команду configure
. Например, использование -prefix %CD%\output\x64\vc12
будет подходящей выходной (суб) папкой для 64-битной сборки Visual Studio 2013 (12.0).
Поддержка Unicode (ICU)
Если вам нужна поддержка Unicode (через ICU), обратите особое внимание на инструкции, указанные в ссылке выше. Таким образом, ICU должен быть построен с нуля в VS 2012, так как единственные предустановленные бинарные файлы для ICU для Windows - для VS 2010. Строительство в VS 2012 безболезненно - просто найдите решение ICU (.sln) в <icuroot> \icu\source\allinone и строить как в режиме отладки, так и в режиме Release (в 32-битном или 64-битном режиме, в зависимости от того, в каком режиме вы строите Qt). НЕ создавайте другую битту, потому что ICU перезапишет выходную папку с двоичными файлами). (Процесс сборки Qt будет правильно размещать сборку отладки и выпуска ICU.) Он должен строиться без ошибок. Затем добавьте путь к <icuroot> \lib в качестве строковой записи в (возможно) новой переменной среды Windows, называемой "LIB" (для этого вы можете использовать Rapid EE, сделать LIB "расширяемой строкой" в RapidEE, хотя там только 1 запись), а также добавить путь к <icuroot> \include как запись строки в (возможно) новой переменной среды Windows, называемой "INCLUDE". (Примечание. Добавление этих путей в переменную PATH не будет работать.) После создания Qt вы можете удалить все эти записи, которые вы только что добавили. Кроме того, добавить путь среды выполнения к DLL ICU (<icuroot> \bin) в переменную PATH среды или процесс сборки Qt (в частности, при запуске uic.exe
) предоставит обманчивая и вводящая в заблуждение ошибка. Наконец, в командной строке configure
(ниже) обязательно добавьте -icu
в качестве дополнительного параметра командной строки.
Сбой ICU:
В настоящее время, похоже, есть ошибка сборки Qt5 с компилятором VS2012, КОГДА ICU ISABLED. В частности, qtbase\src\corelib\codecs\qtextcodec.cpp
Линия 688 (Qt5 v5.02) не может вернуть кодек для имени кодека "US-ASCII" (кодек NULL), что приводит к сбою "lrelease.exe" при попытке разыменовать кодек позже (I потеряли этот номер файла/строки, но это очевидное различие в переменной NULL codec
). К сожалению, это означает, что, насколько мне известно, WebKit не может быть построен с (по крайней мере) 32-разрядной сборкой Qt5 с компилятором VS2012, потому что для WebKit требуется ICU.
Если кто-то может построить Qt5 с компилятором VS2012 с включенным ICU, обновите эту Wiki так.
Уточнение ICU:
Если у вас есть ICU на вашем пути, Qt автоматически построит его. Другими словами, флаг "-icu
" существует неявно. Однако это вызывает ошибку с "lrelease.exe", как указано выше. Таким образом, путь вокруг этого заключается в добавлении флага, -no-icu в команду configure
Дополнительные субмодули
Если вам нужны подмодули в дополнение к подмодулям по умолчанию, вы можете использовать SmartGit (или командную строку) после завершения команды init-repository
. SmartGit, пожалуй, проще всего, потому что вам не нужно копировать путь к командной строке, но можете напрямую использовать пользовательский интерфейс.
ПРЕДУПРЕЖДЕНИЕ: НЕ ЗАГРУЖАЙТЕ ДОПОЛНИТЕЛЬНЫЙ qlalr
SUBMODULE, так как он не будет строиться в сочетании с общей сборкой Qt и не нужен пользователям Qt, а используется только для внутренних Разработка Qt.
ПРЕДУПРЕЖДЕНИЕ: Командная строка оболочки, за которой следует perl .\init-repository --no-webkit
, должна использоваться (NOT SmartGit); эти шаги будут правильно загружать только стандартные подмножества Qt по умолчанию. Вы должны не использовать SmartGit для клонирования и загрузки Git файлов из git://gitorious.org/qt/qt5.git
, потому что SmartGit в настоящее время не обрабатывает подмодули правильно. Вместо этого откройте стандартную командную строку командной оболочки Windows (используя любое приложение командной строки, не обязательно командную строку VS Tools) и (предполагая, что Git правильно установлен в системе, установка SmartGit может или не будет делать это автоматически; если нет, перейдите в Git для Windows и установите непосредственно) введите git clone git://gitorious.org/qt/qt5.git
непосредственно из командной строки; возможно, следуйте этому с помощью git checkout stable
(я не уверен, что эта ветка проверена по умолчанию); затем следуйте за командной строкой perl .\init-repository --no-webkit
, чтобы вытащить репозитории DEFAULT (за исключением WebKit, для которого ICU и ICU, по-видимому, не могут быть построены в 32-битном Qt5 с VS2012, см. комментарии).
Ниже приведены шаги для загрузки всех необходимых исходных файлов Qt: 1. Используйте командную строку Windows для выполнения начального git clone git://gitorious.org/qt/qt5.git
; 2. Выполните perl .\init-repository --no-webkit
из командной строки VS Tools 2012; и затем необязательно 3. Используйте SmartGit (по ссылке выше) (или эквивалент) для "открытия существующего проекта" (выберите корневую папку Qt5) и сделайте Pull из SmartGit для загрузки любых репозиториев, отличных от настроек по умолчанию (но не загружайте qlalr
)., Это; у вас есть все необходимые и дополнительные Qt файлы (включая подмодули) в вашей системе.
Если кто-либо обнаруживает другие необязательные подмодули, которые не могут быть созданы и/или предназначены только для внутреннего использования (кроме qlalr
), обновите эту Wiki, чтобы указать их.
В общем случае допустимы подмодули по умолчанию, полученные через perl .\init-repository --no-webkit
. Если вы знаете или позже узнаете, что вы другие (не по умолчанию) модули, вы всегда можете добавить их позже.
Общие проблемы
Если в какой-то момент вы получите сообщение о том, что команда "python" (или что-то подобное) не распознается, просто проверьте, что папка, содержащая python.exe
(или соответствующий .exe
), является частью переменной пути, Если это не так, добавьте его (используйте RapidEE, как указано выше для удобства) и попробуйте повторить то, что вы делали. Если он есть, убедитесь, что вы перезапустили свою командную строку ПОСЛЕ добавления команды к пути.
Важно отметить две другие проблемы, связанные с путями (цитируется в документации, связанной со ссылкой выше): "Убедитесь, что исполняемый файл perl находится в пути до исполняемого файла perl, предоставленного msysgit, поскольку последний устарел"; и "Возможно, вы не сможете построить, если sh.exe находится в вашей PATH (например, из-за установки Git или msys). Такая ошибка указана командой qt5-srcqtbasebinqmake.exe: команда не найдена и не существует. в этом случае убедитесь, что sh.exe не находится на вашем пути. Вам придется повторно настроить, если ваша установка уже настроена.
Во время процесса вы можете столкнуться с ошибкой, используя nmake
в файле. Если вы это сделаете, просто зайдите в этот каталог и принудительно создайте файл проблемы. Затем снова запустите процесс nmake
на Qt5.
Конкретные проблемы
ВНИМАНИЕ: вам может потребоваться отключить антивирусное программное обеспечение И SANDBOXING во время процесса Qt nmake
(и, чтобы быть в безопасности, на протяжении всего этого процесса). Внутри Qt выполняет несколько исполняемых файлов, которые могут препятствовать антивирусным программам (иногда молча). В частности, если у вас есть программное обеспечение для песочницы, убедитесь, что вы отключили песочницу.
ПРЕДУПРЕЖДЕНИЕ: AVAST! Пользователи песочницы: у Avast Sandbox есть ошибка, в которой даже при отключении автоматической песочницы Avast песочница НЕ будет отключена, и она будет беззвучно изолировать все файлы ресурсов, автоматически созданные Qt rcc
во время процесса сборки Qt. Конструкция Qt ALWAYS терпит неудачу для любого пользователя, который установил Avast autosandbox, EVEN WITH AUTO-SANDBOXING TURNED OFF. ТОЛЬКО ПУТЬ ПРЕКРАТИТЬ ЭТОТ ВЫПУСК, ЧТОБЫ ПОЛНОСТЬЮ УДАЛИТЬ АВИА! ОТ ВАШЕЙ СИСТЕМЫ перед построением Qt. Вы можете переустановить Avast! после завершения сборки Qt.
Компиляция Qt5 может занять много времени (часы, даже с опцией многопоточности -mp). Patience.
Шаг 3: Интеграция Qt5 с Visual Studio 2012
-
Загрузите и установите Visual Studio Qt5 addin. Он находится в разделе "Другие загрузки" в нижней части страницы и не будет работать с Visual Studio Express.
-
Откройте Visual Studio 2012 и перейдите к
Qt Options
(в разделе "Qt5" в верхней строке меню). -
На вкладке "Версии Qt" проверьте, есть ли Qt5. Если это не так, нажмите "Добавить", выберите имя версии (вероятно, такое имя, как 5.x.x), и перейдите в папку, содержащую
qmake.exe
(обычноC:\Qt\qt5\qtbase
). -
Закройте диалоговое окно Qt Options.
-
Создайте новый проект Visual Studio. Когда вы видите диалоговое окно "Новый проект", вы должны увидеть параметр
Qt5 Projects
Template. -
Как только у вас появится новый проект Qt, щелкните его правой кнопкой мыши и выберите "Преобразовать в проект, созданный с помощью QMake". Создайте проект, затем щелкните его правой кнопкой мыши и выберите "Преобразовать проект в проект надстройки Qt". Снова запустите, затем запустите. Теперь у вас должен быть рабочий проект Qt.
Добавить Qt5 в существующий проект Visual Studio 2012 VС++
Этот раздел может работать или не работать. Если у вас возникли проблемы или у вас есть дополнительные/лучшие решения, оставьте комментарий или отредактируйте соответствующий шаг.
-
Щелкните правой кнопкой мыши на своем проекте в VS и выберите "выгрузить проект". Щелкните правой кнопкой мыши по проекту еще раз и выберите "изменить [название проекта].vcxproj". Это откроет файл проекта, чтобы вы могли добавить Qt5 к нему.
-
Перейдите к глобальной группе свойств и добавьте или измените
<Keyword>
на Qt4VSv1.0. -
Перезагрузите проект, затем щелкните правой кнопкой мыши и выберите "Преобразовать проект в проект надстройки Qt"
-
Дождитесь завершения преобразования (это не займет больше пары секунд), затем выберите
Qt5>Project Settings
. Перейдите на вкладку "Модули" и проверьте модули, на которые должен рассчитывать ваш проект (базовыми являютсяCore
,Widgets
иGUI
). -
Следуя шагам здесь, добавьте каталог
$(QTDIR)\include
.ПРИМЕЧАНИЯ:
Если вы в любой момент включаете
windows.h
, перед тем, как это сделать, нужно#define NOMINMAX
, чтобы предотвратить конфликт сqdatetime.h
.Как только сделанные выше шаги будут выполнены, вы можете сделать свой проект пригодным для использования Qt Creator, выбрав
Qt5>Create basic .pro file
.
КОНЕЦ ПРИМЕЧАНИЯ:Если у вас есть вопрос, связанный с информацией, содержащейся в этом руководстве, отправьте его как новый вопрос (не ответ здесь), и ответ или ссылка на ответ могут быть добавлены.