通过msbuild(14.0)传递/ Zm等全局选项

时间:2017-04-20 15:14:45

标签: visual-studio msbuild

如何通过" msbuild.exe"传递烦人的/Zm500(500%虚拟内存,因为MS编译器是傻瓜甚至32位)这样当使用它编译解决方案时,每个" cl.exe"调用

1 个答案:

答案 0 :(得分:2)

  

如何通过烦恼的/ Zm500通过" msbuild.exe"

我们无法直接通过MSBuild命令行传递全局选项/ Zm。因为PreprocessorDefinitionsCLCompilePropertyGroup

  <ClCompile>
    <AdditionalOptions>/bigobj  /Zm500 %(AdditionalOptions)</AdditionalOptions>
    <DisableSpecificWarnings>4453;28204</DisableSpecificWarnings>
  </ClCompile>

作为此问题的解决方法,您可以添加目标调用MSBuild,以通过MSBuild命令行将外部参数传递到项目文件中:

首先,在项目文件中用$(Zm)更改“/ Zm500”的固定值:

  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
   <AdditionalOptions>/bigobj  $(Zm) %(AdditionalOptions)</AdditionalOptions>
   <DisableSpecificWarnings>4453;28204</DisableSpecificWarnings>
</ClCompile>

其次,将目标添加到项目文件中:

<Target Name="TestBuild" Returns="@(ManagedTargetPath)">
    <MSBuild Projects="YourProjectName.xxproj" Targets="NormalBuild" Properties="Zm=/Zm500"/>
  </Target>

第三,使用带有属性/ Zm的MSBuild命令行:

msbuild.exe "$(ProjectPath)\.xxproj" /p:Zm=/Zm500