2009-04-17 3 views
16

Я хочу написать простой пакетный скрипт, который загружает среду сборки Visual Studio с использованием vcvars32.bat, а затем продолжит сборку, используя vcbuild. Однако мой скрипт не будет выполняться после вызова vcvars32.bat. Последний выход я получаю:Как написать сценарий сборки, который запускает vcvars32.bat, а затем продолжает сборку?

Setting environment for using Microsoft Visual Studio 2008 x86 tools. 

Как вы можете видеть, я использую Visual Studio 2008. Вот мой простейший пакетный скрипт:

@echo off 
"C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat" 
vcbuild 

ответ

28

Вы должны использовать call в пакетный сценарий, или прекращение действия vcvars32.bat прекратит ваш собственный пакетный скрипт. Поэтому ваш сценарий должен быть:

@echo off 
call "C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat" 
vcbuild 
+6

Это происходит даже без инструкции exit в файле vcvars32.bat. Вызов командного файла без «вызова» запускает командный файл и завершается, когда он доходит до конца второго командного файла. (См. Также недавнюю статью Раймонда Чена на эту тему: http://blogs.msdn.com/oldnewthing/archive/2009/04/16/9551818.aspx) –

+0

Спасибо, я обновлю свой ответ. –

+1

Вы должны использовать% VCINSTALLDIR% вместо ссылки на файлы программы, которая сделает ее переносимой для других машин сборки или если вам случится установить VS в другом месте. –

4

Вы также хотите, чтобы проверить, что сценарий не работает уже или вы начнете бежать из памяти, если вы вызываете сценарий снова и снова в той же консоли.

IF '%VSINSTALLDIR%' NOT EQU '' THEN EXIT 0 
1

Точный путь к файлам программ зависит от наличия у вас 32- или 64-разрядной ОС и где вы установили Visual Studio. Используйте переменную окружения VS100COMNTOOLS, которую Visual Studio устанавливает во время установки, чтобы решить эту проблему в общем случае.

call "%VS100COMNTOOLS%\..\..\VC\bin\vcvars32.bat" 
... 

Обратите внимание, что каждая версия Visual Studio имеет определенную переменную среды на основе ее базового номера версии.

Visual Studio 2005 VS80COMNTOOLS 
Visual Studio 2008 VS90COMNTOOLS 
Visual Studio 2010 VS100COMNTOOLS 
Visual Studio 2012 VS110COMNTOOLS 
Visual Studio 2013 VS120COMNTOOLS 

Вы получаете идею.