使用 MSBuild 将 /MP 选项传递给编译器
Pass /MP option to the compiler using MSBuild
我有一个 VC 项目文件,我正在使用 MSBuild 从命令行构建它。我想指定 /MP
标志 而无需 编辑项目文件。那可能吗?
我在调用 MSBuild 之前尝试了 set CL=/MP
,但没有任何效果。
您需要一个可以从命令行覆盖的 属性。在文本编辑器中打开 .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
这可以通过访问 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
标志作为 /MP2
传递给 cl.exe
。这允许在同一项目中并行编译 2 .cpp
个文件。
我有一个 VC 项目文件,我正在使用 MSBuild 从命令行构建它。我想指定 /MP
标志 而无需 编辑项目文件。那可能吗?
我在调用 MSBuild 之前尝试了 set CL=/MP
,但没有任何效果。
您需要一个可以从命令行覆盖的 属性。在文本编辑器中打开 .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
这可以通过访问 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
标志作为 /MP2
传递给 cl.exe
。这允许在同一项目中并行编译 2 .cpp
个文件。