使用MSBuild将/ MP选项传递给编译器

时间:2015-07-08 13:49:48

标签: c++ windows visual-studio msbuild

我有一个VC项目文件,我使用MSBuild从命令行构建。我想在没有编辑项目文件的情况下指定/MP标志。那可能吗? 我在调用MSBuild之前尝试了set CL=/MP,但它没有效果。

2 个答案:

答案 0 :(得分:6)

您需要一个可以从命令行覆盖的属性。在文本编辑器中打开.vcxproj文件,记事本会这样做。找到“Globals”属性组并添加名为“Turbo”

的属性
  <PropertyGroup Label="Globals">
    <Turbo>false</Turbo>
    ...etc...
  </PropertyGroup>

并使用该属性指定编译选项。因为它只能在Release版本中运行:

  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
    <ClCompile>
      <MultiProcessorCompilation>$(Turbo)</MultiProcessorCompilation>
        ...etc...
    </ClCompile>

运行MSBuild:

  msbuild /p:Configuration=Release /p:Turbo=true

答案 1 :(得分:3)

这可以通过访问CL_MPCount Visual Studio选项来完成:

MSBuild /m:2 /p:CL_MPCount=2 /p:Configuration=Release tf_tutorials_example_trainer.vcxproj

以上指示编译器最多执行2个并行编译任务。 /m:2标志允许MSBuild并行构建两个项目。最终结果是我们最多有4个cl.exe进程并行运行。

更新CL_MPCount=2标记作为cl.exe传递给/MP2。这允许在同一个项目中并行编译2个.cpp文件。