换句话说,从命令行使用 msbuild,我将如何
将 MinimalRebuild (/Gm-) 覆盖为 false 和
MultiProcessorCompilation (/MP) 是真的吗?
CL_MPCount 可以被/p:xxx=xxx 覆盖,但MultiProcessorCompilation 和MinimalRebuild 不能。需要明确的是,如果它是 MSBuild 的属性,它只能被 /p:xxx=xxx(p 表示属性) 覆盖。并且该属性通常可以通过$ 调用。所以我做了一些测试:
编辑
测试
1)CL_MPCount
这个值表示VS IDE中并发C++编译的最大数量。可以参考this。
所以我已经通过(调试->选项->项目和解决方案->VC++项目解决方案并将Maximum Number of concurrent C++ compilations设置为2。)
编写一个自定义目标,例如
<Target Name ="Test" AfterTargets="Build">
<Message Importance="high" Text="CL_MPCount is= $(CL_MPCount)">
</Message>
</Target>
然后Build就显示出来了;
由此我们可以看出这是属于MSBuild的一个属性。
2)最小重建
通常表示/GM,通常在 c++ 项目的属性中设置。我已将其设置为True(右键单击项目-->属性-->C/C++-->代码生成-->将Enable Minimal Rebuild设置为True)。
自定义目标,如
<Target Name ="Test" AfterTargets="Build">
<Message Importance="high" Text="MinimalRebuild is= $(MinimalRebuild)">
</Message>
</Target>
结果是这样的
据此,$(MinimalRebuild) 无法使用 VS IDE 中设置的值,这意味着它不是 MSBuild 的属性。
3) 多处理器编译
它也意味着/MP,从文档中我们会发现它是编译器的一个选项,而不是MSBuild的属性。此外, l 和MinimalRebuild 一样,它没有被输出。所以它也不是 MSBuild 的属性。
另外,我之前以为MinimalRebuild和MultiProcessorCompilation是MSBuild的选项。于是我在命令行中输入MSBuild -help,发现根本没有列出这些参数。所以我觉得这两个参数和MSBuild完全没有关系,只是编译器的一些选项。
希望对你有帮助。