1

Я работаю над пакетным скриптом, который будет строить проекты, выполненные с помощью Visual Studio 2010. Мне нужно, чтобы он построил четыре варианта одного и того же проекта: 32-разрядный Debug, 32-разрядный Release, 64-разрядная отладка и 64-разрядная версия.Как создавать проекты Visual Studio для разных архитектур

До сих пор, я думаю, что я понял, как построить проект с его последнего сохранения настроек:

"%MSBUILD_DIR%\MSBuild.exe" !PROJECTNAME!.vcxproj /t:Build^ 

Как я могу изменить это, так что он будет строить четыре различных конфигураций, которые нужны ?

+0

В конечном счете, вы могли бы быть лучше делать это в MSBuild вместо пакетного файла, так как MSBuild было сделано для выполнения задач, так же, как это (т.е. кросс-продукта между конфигурациями и платформами, а затем петлю над ним). Может закончиться и короче, плюс вы узнаете о каком-то msbuild, который может пригодиться в будущем. – stijn

ответ

1
@echo off 
setlocal 

set _project=project.vcxproj 

call :do_build "%_project%" Release Win32 
call :do_build "%_project%" Debug Win32 
call :do_build "%_project%" Release x64 
call :do_build "%_project%" Debug x64 

endlocal 
exit /b 0 

:do_build 
setlocal 
set _proj=%~1 
set _conf=%~2 
set _arch=%~3 
set _code=0 
if "%_arch%"=="Win32" (set _vc_arg=x86) else (set _vc_arg=amd64) 
call "%VS100COMNTOOLS%..\..\VC\vcvarsall.bat" %_vc_arg% 
msbuild /t:build /p:Configuration="%_conf%" /p:Platform=%_arch% %_proj% || set "_code=1" 
endlocal & exit /b %_code% 
+0

Где находится '% _arch%' и что делает вызов 'vcvarsall.bat'? –

+0

Из того, что я могу сказать, похоже, что '% _arch%' предназначен для представления собственной архитектуры платформы, на которой выполняется компилятор. Это верно? https://msdn.microsoft.com/en-us/library/x4d2c09s(v=vs.100).aspx –

+0

Извините. Первоначально я использовал немного другой скрипт. См. Обновление. –