Как получить Qt5 для загрузки и интеграции с Visual Studio 2012? С какими проблемами вы столкнетесь и как вы решите эти проблемы?
ОБНОВЛЕНИЕ re. Visual Studio 2013
Об успехах сообщается и в Visual Studio 2013, а примечания сохраняются для VS 2013.
Также обратите внимание, что Суть вопроса сильно только строительство Qt с Visual Studio. Также есть заметки об интеграции с Visual Studio IDE
Этот метод протестирован для работы в Visual Studio 2013. Готовые двоичные файлы с использованием Visual Studio 2012 и 2013 доступны Вот, в том числе версии OpenGL.
Скачайте и установите RapidEE Вот. RapidEE — редактор переменных среды Windows. Это чрезвычайно полезно для остальной части этого процесса (и просто в целом).
Установите DirectX 11 SDK. Теперь он является частью Windows 8 SDK, поэтому сначала нужно установить DirectX 10 SDK, который вы можете получить Вот (но см. предупреждение в следующем предложении). Если у вас установлен распространяемый пакет Visual C ++ 2010, и вы, вероятно, делаете это (он автоматически устанавливается вместе с VS 2010), выполните действия, описанные Вот помочь с установкой DirectX 10. После установки DirectX 10 SDK загрузите и установите Windows 8 SDK Вот, который содержит DirectX 11 SDK. Да, это неприятно, но если вы не знаете, что у вас есть DirectX 11 SDK, сборка Qt не удастся.
Установите Python для Windows (я слышал 2.6+, работа с 3.3) из Python.org или же Анаконда Питон.
Установите Perl для Windows из ActiveState.
Следовать руководство по установке для Windows на сайте qt-проекта.
Резюме
Чтобы суммировать детали из вышеуказанной ссылки и из следующих заметок (ПОЖАЛУЙСТА, СМОТРИТЕ СЛЕДУЮЩИЕ ЗАМЕЧАНИЯ, если у вас есть какие-либо ошибки; на них можно ответить):
Удалите Avast (если он у вас установлен), чтобы избежать ошибок сборки. Да, это буквально означает деинсталляция Это. Удалите его на 100% из вашей системы. деактивация Это не будет работать. Смотрите подробные заметки ниже.
Обратите внимание на первые шаги: НЕ используйте SmartGit для первого git
потяните внизу (если вы действительно не знаете, что делаете), так как значения по умолчанию SmartGit будут тянуть все, и это не то, что вы хотите.
Git для Windows должен быть установлен.
Решите, где вы хотите положить Qt
установка и cd
в каталог, который будет содержать новую установку из любого окна командной строки. (Поскольку процесс настолько хрупок и подвержен ошибкам, я лично положил его прямо в C:
, но это скорее всего не обязательно).
Из вышеуказанного каталога выполните:
git clone git://gitorious.org/qt/qt5.git qt5
Это быстро. По завершении вы должны перейти в «стабильную» ветку, но вы всегда можете запустить git checkout stable
после cd
входя во вновь созданный qt5
каталог, просто чтобы быть уверенным. С помощью git checkout 5.4.1
подтверждена работа с VS2013 64-bit.
Закрыть из текущего окна командной строки (если это не окно командной строки 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, и, вероятно, нет необходимости указывать -platform в командной строке (даже если у вас установлены предыдущие версии VS). Для VS2013 используйте -platform win32-msvc2013
,
Выполнение этого шага занимает несколько минут, но это не так плохо.
Наконец, команда для фактической сборки Qt в системе (также запускаемая в командной строке VS Native Tools) просто:
nmake
Ожидайте часа ожидания для завершения сборки. Если вы указали выходную папку с -prefix
(см. примечания ниже), затем используйте nmake install
иначе это все.
ЗАМЕТКИ:
Главные примечания
В случае, если вы запутались в вышеприведенной документации, просто укажите, что библиотека ANGLE будет использоваться (по умолчанию) вместо OpenGL, и поэтому вам пришлось установить DirectX 11 выше.
Убедитесь, что вы используйте командную строку VS Native Tools выполнить все команды по ссылке выше (то есть 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 и выполните сборку как в режиме отладки, так и в режиме выпуска (в 32-битном или 64-битном режиме, в зависимости от того, в каком режиме вы собираете Qt — НЕ встраивайте в другую битность, потому что ICU будет перезаписывать выходная папка с двоичными файлами). (Процесс сборки Qt правильно определяет местонахождение сборки отладки и выпуска ICU.) Он должен собираться без ошибок. Затем добавьте путь к <icuroot>\ lib как строковая запись в (возможно) НОВОЙ переменной среды Windows под названием «LIB» (для этого вы можете использовать Rapid EE; сделать LIB «расширяемой строкой» в RapidEE, даже если есть только 1 запись), а также добавить путь в <icuroot>\ включить как строковую запись в (возможно) НОВУЮ переменную среды Windows под названием «ВКЛЮЧИТЬ». (Примечание: Добавление этих путей к переменной PATH не будет работать.) После сборки Qt вы можете удалить все эти записи, которые вы только что добавили. Кроме того, сделать добавить путь времени выполнения к DLL ICU (<icuroot>\ bin) к переменной окружения PATH или процессу сборки Qt (в частности, когда uic.exe
работает) даст обманчивая и вводящая в заблуждение ошибка. Наконец, на configure
командной строки (ниже), обязательно добавьте -icu
в качестве дополнительного параметра командной строки.
Сбой ICU:
В настоящее время, кажется, есть ошибка сборки Qt5 с компилятором VS2012, КОГДА ICU ВКЛЮЧЕН. В частности, qtbase\src\corelib\codecs\qtextcodec.cpp
Строка 688 (Qt5 v5.02) не может вернуть кодек для имени кодека «US-ASCII» (кодек равен NULL), что приводит к сбою «lrelease.exe» при попытке разыменования кодека позднее (я потерял этот путь номер файла / строки, но это явное разыменование NULL codec
переменная). К сожалению, это означает, что, насколько мне известно, WebKit не может быть собран с (по крайней мере) 32-битной сборкой Qt5 с компилятором VS2012, потому что WebKit требует ICU.
Если кто-то может собрать Qt5 с компилятором VS2012 с включенным ICU, обновите эту вики, сказав так.
Разъяснение ICU:
Если на вашем пути есть ICU, Qt автоматически его построит. Другими словами, флаг «-icu
«есть там неявно. Однако это вызывает ошибку с» lrelease.exe «, как упомянуто выше. Таким образом, можно обойти это путем добавления флага -no-icu к команде configure
Дополнительные подмодули
Если вы хотите, чтобы субмодули к тому же к субмодулям по умолчанию вы можете использовать SmartGit (или командную строку) после Вы завершаете init-repository
команда. SmartGit, пожалуй, самый простой, потому что вам не нужно копировать путь к командной строке, но вы можете напрямую использовать пользовательский интерфейс.
ПРЕДУПРЕЖДЕНИЕ: НЕ СКАЧАТЬ ДОПОЛНИТЕЛЬНО qlalr
подмодуль, поскольку он не собирается в сочетании с общей сборкой Qt и не является обязательным для пользователей Qt, но используется только для внутренней разработки Qt.
ПРЕДУПРЕЖДЕНИЕ: Командная строка оболочки, сопровождаемая perl .\init-repository --no-webkit
, должен быть использован (НЕ 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) и выполните извлечение из SmartGit, чтобы загрузить любые репозитории не по умолчанию (но не загружайте qlalr
). Это оно; у вас есть все необходимые и дополнительные файлы Qt (включая подмодули) в вашей системе.
Если кто-то обнаружит другие необязательные подмодули, которые не в состоянии построить и / или предназначены только для внутреннего использования (кроме qlalr
), пожалуйста, обновите эту вики, чтобы указать их.
В общем, подмодули по умолчанию, полученные через 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 снова.
Конкретные проблемы
ПРЕДУПРЕЖДЕНИЕ: Возможно, вам придется отключить антивирусное программное обеспечение И песочница во время Qt nmake
процесс (и, чтобы быть в безопасности, на протяжении всего этого процесса). Внутри Qt выполняет ряд исполняемых файлов, в которые могут вмешиваться антивирусные программы (иногда молча). В частности, если у вас есть какое-либо программное обеспечение для песочницы, обязательно отключите песочницу.
ПРЕДУПРЕЖДЕНИЕ: AVAST! Пользователи песочницы: в Avast Sandbox есть ошибка, из-за которой, даже если вы отключите авто-песочницу Avast, песочница НЕ отключится, и она будет автоматически помещать в песочницу все файлы ресурсов, автоматически созданные Qt rcc
программа во время процесса сборки Qt. Сборка Qt ВСЕГДА терпит неудачу для любого пользователя, который установил функцию автоматической блокировки Avast, ДАЖЕ С ВЫКЛЮЧЕННЫМ АВТОСАНДБОКСОМ. Единственный способ преодолеть эту проблему — полностью удалить AVAST! ИЗ ВАШЕЙ СИСТЕМЫ перед сборкой Qt. Вы можете переустановить Avast! после завершения сборки Qt.
Компиляция Qt5 может занять много времени (часы, даже с опцией -mp многопоточности). Терпение.
Загрузите и установите Visual Studio Надстройка Qt5. Он находится в разделе «Другие загрузки» в нижней части страницы и не будет работать с Visual Studio Express.
Откройте Visual Studio 2012 и перейдите к Qt Options
(Это находится под «Qt5» в верхней строке меню).
На вкладке Версии Qt проверьте, существует ли уже Qt5. Если это не так, нажмите «Добавить», выберите имя версии (возможно, такое как 5.x.x) и перейдите в папку, содержащую qmake.exe
(обычно C:\Qt\qt5\qtbase
).
Выйдите из диалогового окна Qt Options.
Создайте новый проект Visual Studio. Когда вы видите диалоговое окно New Project, вы должны увидеть Qt5 Projects
Вариант шаблона.
Получив новый проект Qt, щелкните его правой кнопкой мыши и выберите «Преобразовать в созданный проект QMake». Создайте проект, затем снова щелкните его правой кнопкой мыши и выберите «Преобразовать проект в проект надстройки Qt». Построить снова, затем запустить. Теперь у вас должен быть рабочий проект Qt.
Этот раздел может или не может работать для вас. Если вы столкнулись с проблемами или у вас есть дополнительные / лучшие решения, пожалуйста, оставьте комментарий или отредактируйте соответствующий шаг.
Щелкните правой кнопкой мыши ваш проект в VS и выберите «выгрузить проект». Снова щелкните правой кнопкой мыши по проекту и выберите «edit [имя проекта] .vcxproj». Откроется файл проекта, чтобы вы могли добавить к нему Qt5.
Перейдите в Global PropertyGroup и добавьте или измените <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
,
ЗАКЛЮЧИТЕЛЬНЫЕ ЗАМЕЧАНИЯ: Если у вас есть вопрос, связанный с информацией, содержащейся в данном руководстве, пожалуйста, опубликуйте его как новый вопрос (не ответ здесь), и ответ или ссылка на ответ могут быть добавлены.
Мне удалось интегрировать Qt 5.0.2 с Visual Studio 2012 на Windows 7 на основе превосходной вики и выше. ссылка на этот qt-проект также. Поскольку я сделал некоторые шаги немного по-другому, я подумал, что было бы правильно опубликовать это здесь:
Последовательность ниже должна быть выполнена в точном заданном порядке:
0 — удалите Avast (если он у вас установлен), чтобы избежать ошибок сборки. Из-за ошибки Avast ее деактивация не сработает;
1 — Установить Git (> = 1.6.x);
2 — Установите Python (> = 2.6.x). [Python.org];
3 — Установите Perl (> = 5.14). [Activestate.com];
4 — Установите Ruby. [Rubyinstaller.org];
5 — Откройте командную строку Windows 7 (пока не используйте командную строку разработчика VS2012);
6 — Выберите любой каталог, который вы хотите для qt5, относительно этого НЕ ДОПУСКАЕТСЯ ПРОСТРАНСТВ для выбранного пути. Я решил использовать путь «C: \ qt5»;
7. Вернитесь в командную строку Windows 7 (в моем случае запрос «C: \ qt5>») типа:
git clone git://gitorious.org/qt/qt5.git qt5
8 — Оформить стабильную версию:
cd qt5
git checkout stable
9 — Вы, вероятно, получите сообщение, подтверждающее, что эта версия уже стабильна. Закройте командную строку;
10 — Откройте консоль разработчика Visual Studio (Все программы> Visual Studio 2012> Инструменты Visual Studio> Командная строка разработчика для VS2012) и измените текущий каталог на тот, который вы выбрали («C: \ qt5» в моем примере);
11 — Загрузите подмодули Qt, игнорируя webkit (общий источник ошибок сборки …):
perl .\init-repository --no-webkit
12 — Теперь введите эту огромную команду для правильной настройки вашей сборки:
configure -developer-build -opensource -nomake examples -nomake tests -nomake demos -debug-and-release -c++11 -mp -nomake webkit -confirm-license
13 — Далее убедитесь, что модуль qlalr будут НЕ быть построенным Для этого откройте проводник Windows и перейдите в выбранный вами каталог Qt («C: \ qt5в моем примере) и проверьте, если папка qlalr существует. Если так, удалите это;
14 — Время для сборки … Возможные ошибки сборки могут появиться из вторичных модулей (таких как webkit), которые не влияют на основную функциональность Qt (сам webkit не должен быть проблемой, так как ранее мы настроили конфигурацию не собирать Это). Затем мы можем игнорировать их, а также поддерживать сборку на независимых модулях:
nmake /I /K
15 — Чтобы завершить интеграцию, выполните шаг 3 вики сообщества выше («Шаг 3: Интеграция Qt5 с Visual Studio 2012»).
Просто хочу упомянуть, что есть готовая версия Qt 5.2 для Visual Studio 2012, доступная на http://qt-project.org/downloads. Так что если у вас нет особого интереса к сборке Qt 5 из исходников, вы также можете использовать готовые двоичные файлы.
Есть также несколько предварительно скомпилированных (x64) двоичных файлов для различных версий компилятора, доступных на Сайт Тверь-Софт.
Я наконец смог скомпилировать QT 5.1 (git) с QWebKit на Windows 8 x64, используя Visual Studio 2012, и решил поделиться своим опытом с теми, у кого тоже были проблемы.
Сделал шаг 1 и 2 как указано в посте выше. Я попытался выполнить шаг 3, но SmartGit вытащил кучу дополнительных проектов, которые не будут компилироваться с Qt5. Я смог решить большинство проблем путем клонирования с другого форка (например, https://qt.gitorious.org/qt/qt3d/), но это стало слишком утомительным для каждого дополнительного модуля, поэтому я решил не собирать ни один из них.
Пост в Поддержка ICU в 32-битной сборке Qt5 с компилятором VS2012 вызывает сбой сборки Qt5; Webkit также поэтому не собирается сказал мне, как исправить проблему ICU.
Загрузите исходный код по адресу http://download.icu-project.org/files/icu4c/51.2/icu4c-51_2-src.zip и добавьте строку
#define U_CHARSET_IS_UTF8 1
к файлу% ICU% \ source \ common \ unicode \ platform.h, где% ICU% — это путь к исходному коду ICU.
Откройте файл% ICU% \ source \ allinone \ allinone.sln в Visual Studio 2012 и скомпилируйте. Добавьте% ICU% \ bin к вашему пути
set PATH=%ICU%\bin64;%PATH%
Затем я выполнил следующую команду в корневом каталоге QT
configure -platform win32-msvc2012 -opengl desktop -opensource -debug-and-release -I %ICU%\include -L %ICU%\icu\lib64 -mp -qt-freetype -icu
В этот момент я начал подозревать, что никто не пытался делать то, что я делал, потому что nmake начал жаловаться на неожиданные строки в make-файлах (у всех из которых было расширение DerivedSources, например Makefile.JavaScriptCore.DerivedSources и Makefile.WebCore.DerivedSources ))
(set PATH=<stuff>;%PATH%) && ....
перед запуском nmake выполните настройку PATH вручную и удалите символы до && например
(set PATH=<stuff>;%PATH%) && perl -ne "print $1" css\CSSPropertyNames.in ...
становится
perl -ne "print $1" css\CSSPropertyNames.in ...
Наконец, один из этих файлов будет пытаться вызвать win_flex.exe (или win-flex.exe) вместо flex. Я изменил его на flex.exe, и все, наконец, скомпилировано (пришлось изменить его дважды, потому что я думаю, что файл был восстановлен).
Краткий опыт работы с программой, использующей QWebKit и связанной с этой сборкой, позволяет мне верить, что все в порядке.
—Обновить—
Просто чтобы быть полным. В соответствии с Что означает (set PATH = …;% PATH:) = ^)%) в сценарии оболочки Windows и как я могу преодолеть сбой этой строки в контексте сборки Qt5 nmake? (который указывает на http://qt-project.org/forums/viewthread/20605) большинство проблем Makefile должно быть решено с помощью jsom вместо nmake (хотя я все еще задаюсь вопросом о win-flex.exe)
1 — modefier configure.bat в каталоге qtbase, чтобы он мог генерировать configure.exe (только первые 18 строк)
@echo off
set QTSRC=%~dp0
set QTDIR=%CD%
rem if not exist %QTSRC%.gitignore goto sconf
echo Please wait while bootstrapping configure ...
for %%C in (cl.exe icl.exe g++.exe perl.exe) do set %%C=%%~$PATH:C
rem if "%perl.exe%" == "" (
rem echo Perl not found in PATH. Aborting. >&2
rem exit /b 1
rem )
if not exist mkspecs (
md mkspecs
if errorlevel 1 goto exit
)
rem perl %QTSRC%bin\syncqt.pl -minimal -module QtCore -outdir "%QTDIR%" %QTSRC%
rem if errorlevel 1 goto exit
2- configure -opensource -confirm-license -mp -nomake examples -nomake tests -release -c++11 -no-warnings-are-errors -platform win32-msvc2015 -no-ltcg
3- nmake