顺便说一下,MSBuild项目通常都是一个文件,它们的子元素是元数据,下面是一个例子,注意它们被放在一个“ItemGroup”中。
图5 MSBuild项目文件示例
因为这是一个元数据,如果是高手,完全可以直接修改每个文件,你需要为使用了#import的文件禁用/MP,因为它不支持/MP,其它不支持/MP的特性是/Gm,/Gm表示渐进式编译,更多参数请参考http://msdn.microsoft.com/en-us/library/bb385193.aspx。
回到多处理器CL,如果你想明确告诉CL有多少并行编译执行,Visual Studio可通过/MP实现,它出现在全局设置中。
图6 C++编译最大并行任务数设置
Visual Studio通过一个全局属性CL_MPCount进行设置,这意味着在Visual Studio外构建时将不受任何影响。
如果你选择一个更细粒度的值,你就不能使用图形界面进行设置了,因为你根本看不到它的设置项,这时就必须打开项目文件直接进行修改。在CLICompile项目上这是一个完全不同的元数据块,叫做“ProcessorNumber”,你可以设定一个从1到你认为合理的一个值,然后在/MP后也追加一个同样的值,如果没有,它就会被忽略。
图7 ProcessorNumber和MultiProcessorCompilation设置
图中出现的波浪线是一个小小的bug,直接忽略它。