Консоль сборки приложения

Введение

Обычно проекты Qt-проекты собираются при помощи Qt-Creator. И он отлично умеет находить компилятор от VisualStudio и собирать им.

Проблемы возникают, когда нужно собирать приложение из скрипта, например настроить автоматическую сборку в CI-системе.

Решение

На помощь приходит скрипт vcvarsall.bat, который настраивает окружение для сборки компилятором от VS. Стандартное решение - запускать vcvarsall.bat, и в открывшейся консоли запускать свой сборочный скрипт - не подходит для автоматической сборки.

Секрет заключается в том, чтобы вызывать vcvarsall.bat при помощи call, в этом случае он успешно отработает, а вызывающая программа наследует все переменные окружения, которые выставил скприпт vcvarsall.bat.

Пример сборочного скрипта

Конфигурационный файл

У каждого разработчика могут быть свои пути к компилятору VisualStudio и Qt. Поэтому каждому нужен свой конфигурационный файл.

Хорошим решением будет назвать файл VSConfig.cmd.example и положить его под систему контроля версий. Таким образом, пути настраиваются один раз, и при выполнении checkout из репозитория, он гарантированно не затрётся.

Пример файла VSConfig.cmd.example:

SET QTDIR=C:\Qt\Qt5.2.0\5.2.0\msvc2012
SET VSDIR=C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC

Скрипт сборки

Скрипт сборки выставляет нужные пути и вызывает для сборки утилиту nmake.

Сборка происходит в отдельной директории ../builds/build-MyPrj/

Пример скрипта сборки buildVS.cmd:

call "VSConfig.cmd"

SET PATH=%QTDIR%\bin
SET PATH=%PATH%;%VSDIR%\bin
SET PATH=%PATH%;%SystemRoot%\System32
SET QMAKESPEC=win32-msvc2012

cd ../
mkdir builds
cd builds
mkdir build-MyPrj
cd build-MyPrj

call "%VSDIR%\vcvarsall.bat" x86

qmake.exe ../../MyPrj/MyPrj.pro -spec %QMAKESPEC% "CONFIG-=debug" "CONFIG+=release"

nmake.exe /f Makefile