Дом Qt5 в Visual Studio 2012 или Visual Studio 2013 и интеграции с IDE

Как получить Qt5 для загрузки и интеграции с Visual Studio 2012? Каковы некоторые из проблем, с которыми вы столкнетесь, и как вы решите эти проблемы?

обновить re. Visual Studio 2013

об успехах также сообщается в Visual Studio 2013, и заметки поддерживаются для VS 2013.

также обратите внимание, что фокус вопроса сильно на просто здание Qt с Visual Studio. Существуют также заметки об интеграции с Visual Studio IDE

5 ответов


этот метод протестирован для работы в Visual Studio 2013. Доступны предварительно построенные двоичные файлы с использованием Visual Studio 2012 и 2013 здесь, включая версии OpenGL.

Шаг 1: Настройка

  1. скачать и установить RapidEE здесь. RapidEE-это редактор переменных среды windows. Это чрезвычайно полезно для остальной части этого процесса (и просто в целом).

  2. установить для 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 потерпит неудачу.

  3. установить Python для Windows (я слышал 2.6+, работает с 3.3) изPython.org или Anaconda Python.

  4. установить Perl для Windows из ActiveState.


Шаг 2: Gitting (и строительство) Qt5 (да, это означает Git)

  1. следуя руководство по установке для Windows на веб-сайте qt-project.

    резюме

    обобщить подробности по ссылке выше и следующие Примечания (см. ниже Примечания если у вас есть любые ошибки; на них можно ответить):

    • удалите Avast (если он установлен), чтобы избежать ошибок сборки. Да, это буквально означает удалить его. Удалите его 100% из вашей системы. отключение это не работает. См. подробные Примечания ниже.

    • Примечание Для первых шагов: не используйте SmartGit для первого git потяните, ниже (если вы действительно не знаете, что вы делаете), так как значения по умолчанию SmartGit будут тянуть все, и это не то, что вы хотите.

    • Git для Windows должен быть установлен.

    • решите, куда вы хотите поместить Qt установки, и cd в каталог, который будет содержать новую установку из любого окна командной строки. (Потому что процесс настолько хрупок и подвержен ошибкам, я лично поставил его в C:, но это скорее всего не нужно).

    • из приведенного выше каталога выполните:

      git clone git://gitorious.org/qt/qt5.git qt5

      это быстро. После завершения вы должны быть на "стабильной" ветке, но вы всегда можете запустить git checkout stable после cding во вновь созданный , просто чтобы быть уверенным. Используя 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-битной автоматической сборки угла;-platform автоматически win32-msvc2012, поэтому по умолчанию используется 32-разрядная сборка Qt, и-платформа, вероятно, не должна поставляться в командной строке (даже если у вас есть предыдущие версии VS установленный.) Для VS2013, используйте -platform win32-msvc2013.

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

    • наконец, команда для фактического построения Qt в системе (также выполняется в командной строке VS Native Tools) просто:

      nmake

      ожидать, чтобы ждать часов для завершения сборки. если вы указали папку с -prefix (см. Примечания ниже), а затем использовать nmake install, в противном случае это все.


Примечания:

Общие Сведения

в случае, если вы запутались в вышеупомянутой документации, просто FYI, что библиотека ANGLE будет использоваться (по умолчанию) вместо OpenGL, и именно поэтому вам пришлось установить DirectX 11, выше.

убедитесь, что вы используйте командную строку VS Native Tools запустить все команды из приведенной выше ссылки (то есть perl .\init-repository --no-webkit, configure и nmake). Вы будете использовать командную строку [32/64] bit (x86 или x64), в зависимости от того, строите ли вы Qt как 32-разрядный или 64-разрядный. Если вы устанавливаете perl с открытой командной строкой (убедитесь, что она находится в PATH), вам нужно будет перезапустить командную строку, чтобы perl был распознан как команда.

при запуске "init-repository" (из шагов в приведенной выше ссылке), это не ясно из документация, но вы должны выполнить это через perl; то есть perl ./init-repository --no-webkit. The configure и nmake команды, однако, вызываются напрямую.

один очень полезный вариант, чтобы перейти к configure is -mp, что заставляет Qt строить на нескольких ядрах параллельно, значительно ускоряя (долгое) время сборки.

чтобы указать выходную папку, добавьте -prefix [outfolder] до . Например, используйте -prefix %CD%\output\x64\vc12 будет подходящей папкой вывода (sub)для 64-разрядной версии Сборка Visual Studio 2013 (12.0).


поддержка Unicode (ICU)

если вы хотите поддержку Unicode (через ОИТ), обратите особое внимание на инструкции, указанные в приведенной выше ссылке. В общем, ICU должен быть построен с нуля в VS 2012, так как единственные встроенные двоичные файлы ICU для Windows предназначены для VS 2010. Строительство в VS 2012 безболезненно-просто найдите решение ICU (.sln) в \icu\source\allinone и построить в обоих Режим отладки и выпуска (либо в 32-битном, либо в 64-битном режиме, в зависимости от того, в каком режиме вы строите Qt - не стройте в другой битности, потому что ICU перезапишет выходную папку двоичными файлами). (Процесс сборки Qt правильно найдет сборку отладки и выпуска ICU.) Он должен строить без ошибок. Затем добавьте путь к \lib в качестве Строковой записи в (возможно) новой переменной среды Windows под названием " LIB "(для этого вы можете использовать Rapid EE; сделайте LIB " расширяемым строка " в RapidEE, хотя есть только 1 запись), а также добавьте путь к \include в качестве Строковой записи в (возможно) новой переменной среды Windows с именем "INCLUDE". (Примечание: добавление этих путей к переменной PATH не будет работать.) После того, как Qt будет построен, вы можете удалить все эти записи, которые вы только что добавили. Кроме того,добавьте путь выполнения к dll ICU ( \bin) в переменную пути среды или процесс сборки Qt (в частности, когда uic.exe runs) даст а обманчивая и вводящая в заблуждение ошибка. Наконец, на 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.ехе", как упоминалось выше. Таким образом, способ обойти это было бы добавить флаг, - no-icu в команду configure


Дополнительные Подмодули

если вы хотите подмодулей in сложение для подмодулей по умолчанию можно использовать SmartGit (или командную строку) после вы заполните . 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 для удаления репозиториев по умолчанию (кроме 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), пожалуйста, обновите эту Вики, чтобы указать их.

в общем случае подмодули по умолчанию получены через perl .\init-repository --no-webkit достаточно. Если вы знаете, или потом узнать, что вы другие (не по умолчанию) модули, вы всегда можете добавить их позже.


Общие Проблемы

если в какой-то момент Вы получите сообщение об ошибке, что команда "python" (или что-то подобное) не распознается, просто проверьте, что папка, содержащая python.exe (или соответствующей .exe) является частью переменной path. Если это не так, добавьте его (используйте RapidEE, как указано выше для удобства) и повторите попытку. Если оно там, то убеждайтесь вы перезапустили командную строку после добавления команды в путь.

важно отметить два других вопроса, связанных с путем (цитируется из документации, связанной со ссылкой выше):"убедитесь, что исполняемый файл perl найден в пути перед исполняемым файлом perl, предоставленным msysgit, так как последний устарел" и "возможно, вы не сможете построить, если sh.exe находится в вашем пути (например, из-за установки git или msys). Такие ошибка указывается qt5-srcqtbasebinqmake.ехе: команда не найдена и так. В этом случае, убедитесь, что Ш.exe не находится на вашем пути. Если установка уже настроена, вам придется заново настроить ее."

во время процесса, вы можете столкнуться с ошибкой, используя nmake на файл. Если вы это сделаете, просто зайдите в этот каталог и принудительно создайте файл проблемы. Тогда начинайте


мне удалось успешно интегрировать Qt 5.0.2 с Visual Studio 2012 в Windows 7 на основе отличной Вики выше и на это Qt-project link как хорошо. Поскольку я сделал некоторые шаги немного по-другому, я подумал, что было бы правильно разместить его здесь:

последовательность ниже должна быть выполнена в точном заданном порядке:

0 - удалите Avast (если он установлен), чтобы избежать ошибок сборки. Из-за ошибки Avast деактивация будет не работать;

1 - Установить Git (>= 1.6.x);

2 - Установить Python (>=2.6.икс.) [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 из источников, вы также можете использовать двоичные файлы prebuild.

существует также несколько предварительно скомпилированных (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 начал жаловаться на неожиданные строки в файлах Makefile (все из которых имели расширение DerivedSources, например, make-файл.JavaScriptCore.DerivedSources и Makefile.WebCore.DerivedSources))

(set PATH=<stuff>;%PATH%) && ....

сделайте путь установки вручную перед запуском nmake и удалите символы до и включая & & например

 (set PATH=<stuff>;%PATH%) && perl -ne "print " css\CSSPropertyNames.in ...

становится

perl -ne "print " css\CSSPropertyNames.in ...

наконец, один из этих файлов попытается вызвать win_flex.EXE-файл (или Win-флекс.exe) вместо flex. Я сменил его на гибкий.exe и все, наконец, скомпилировано (пришлось изменить его дважды, потому что я думаю, что файл получил регенерацию).

Краткий опыт работы с программой, которая использует QWebKit и связана с этой сборкой, заставляет меня верить, что все в порядке.

-- Update--

просто, чтобы быть полным. Согласно что делает (set PATH=...; %PATH:)=^)%) означает в скрипте оболочки Windows, и как я могу преодолеть сбой этой строки в контексте сборки Qt5 nmake? (который указывает на http://qt-project.org/forums/viewthread/20605) большинство Проблемы с Makefile должны быть разрешимы с помощью jsom вместо nmake (хотя я все еще задаюсь вопросом о win-flex.exe)


скомпилируйте Qt 5.5 с visual studio 2015:

1-Настройка modefier.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