使用MSBuild将/MP选项传递给编译器
Pass /MP option to the compiler using MSBuild
我有一个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
相关文章:
- Win32编译器选项和内存分配
- C/C++预处理器是否可以检测一些编译器选项
- 是否有C++编译器选项允许激进地删除所有函数调用,并将参数传递给具有空体的函数
- 基于编译器选项的编译二进制路径
- Qt5 用户界面编译器:-i 选项不可用
- 将"-01"替换为"-02" 英特尔编译器选项会导致 FPE 在较小的 for 循环行程计数中抛出
- 用于捕获未赋值的 r 值的编译器选项
- 暂时将C++项目(VS2015)移至Android操作系统.编译器选项?
- VS2017 C++编译器选项会影响矩阵乘法?
- Gradle with C++:如何更改编译器选项?
- qmake中添加了编译器选项的附加makefile目标
- 在编译器选项上定义字符串
- Clang编译器选项将异常规格LAX错误视为警告
- "-D__STDC_FORMAT_MACROS" GNU 编译器选项
- 不同的输出调用clang上的malloc应用编译器选项-00和-03
- 包括查找编译器选项的外部标头
- 从已编译的可执行文件中获取编译器选项
- Protogen vs. Protoc 编译器选项
- 是否有一组标准编译器选项
- 如何在 eclipse makefile 项目中的编译器选项中设置 -std=c++0x