我正在开发一个批处理脚本,该脚本将构建使用Visual Studio 2010制作的项目。我需要它来构建同一项目的四个变体:32位调试,32位发布,64位调试和64位版本。如何为不同体系结构构建Visual Studio项目
到目前为止,我想我已经找到了如何构建项目与它的最后一次保存的设置:
"%MSBUILD_DIR%\MSBuild.exe" !PROJECTNAME!.vcxproj /t:Build^
如何修改这一点,所以它会建立一个我需要的四种不同的配置?
我正在开发一个批处理脚本,该脚本将构建使用Visual Studio 2010制作的项目。我需要它来构建同一项目的四个变体:32位调试,32位发布,64位调试和64位版本。如何为不同体系结构构建Visual Studio项目
到目前为止,我想我已经找到了如何构建项目与它的最后一次保存的设置:
"%MSBUILD_DIR%\MSBuild.exe" !PROJECTNAME!.vcxproj /t:Build^
如何修改这一点,所以它会建立一个我需要的四种不同的配置?
@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%
'%_arch%'设置在哪里,对'vcvarsall.bat'的调用是做什么的? –
从我可以告诉它看起来'%_arch%'旨在代表运行编译器的本地平台体系结构。那是对的吗? https://msdn.microsoft.com/en-us/library/x4d2c09s(v=vs.100).aspx –
对不起。最初我使用了稍微不同的脚本。查看更新。 –
从长远来看,你可能会在MSBuild的,而不是在一个批处理文件,这样做的更好,为的MSBuild是为了执行任务,就像在它的配置和平台,然后循环之间的(即跨产品)。可能会变得更短,再加上你会学到一些可能在未来派上用场的msbuild。 – stijn