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

Pass /MP option to the compiler using MSBuild

本文关键字:编译器 选项 MP MSBuild 使用      更新时间:2023-10-16

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

这可以通过访问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进程并行运行。

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

您需要一个可以从命令行重写的属性。在文本编辑器中打开.vcxproj文件,记事本就可以了。找到"Globals"属性组并添加一个名为"Turbo"的属性

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

并使用该属性指定编译选项。因为它只能在发布版本中工作:

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

并运行MSBuild:

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