C++ CLMP并行组?

C++ CLMP并行组?,c++,visual-studio-2010,msbuild,C++,Visual Studio 2010,Msbuild,使用/MP时,如果文件使用相同的编译选项,则项目中所有.cpp的编译将并行完成。 例如: stdafx.cpp//创建PCH a、 cpp//使用PCH b、 cpp//使用PCH c、 cpp//使用PCH d、 cpp//不使用PCH 将按如下方式构建: stdafx 然后(a+b+c)(并行) 然后d 是否有可能同时启动不同的组? 我希望这样: (stdafx+d)并联 然后(a+b+c)并联 可能吗 这个问题并不特定于预编译头。 如果我想编译{a.cpp(默认),b.cpp(

使用/MP时,如果文件使用相同的编译选项,则项目中所有.cpp的编译将并行完成。 例如:

  • stdafx.cpp//创建PCH
  • a、 cpp//使用PCH
  • b、 cpp//使用PCH
  • c、 cpp//使用PCH
  • d、 cpp//不使用PCH
将按如下方式构建:

  • stdafx
  • 然后(a+b+c)(并行)
  • 然后d
是否有可能同时启动不同的组? 我希望这样:

  • (stdafx+d)并联
  • 然后(a+b+c)并联
可能吗

这个问题并不特定于预编译头。
如果我想编译{a.cpp(默认),b.cpp(警告为错误)},同样适用。a、 cpp将首先完成,然后b.cpp

我能想到的唯一答案是将这些不同的分组放在单独的项目中,并利用并行构建项目的能力。但是,这会使设置和使用预编译头变得复杂。

这是一种可能的解决方法是的,但它是唯一的解决方法吗?我正在从事一个遗留项目,这种重构不是微不足道的(遗憾的是)。它是我能想到的唯一一个,不一定是唯一的一个。只是RTFM,/Yc选项被明确列为与/MP不兼容。它不仅仅是Yc,它是所有类型的选项。无论是“生成预编译头”、“使用预编译头”、“警告为错误”、“clr”。。。每组“选项集”将按顺序编译。。没有理由这么做。