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