Введение
Обычно проекты 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