2

我正在尝试利用我们构建服务器的所有 12 个核心,但无法指定 /M12 并让所有 12 个核心在构建上工作。似乎 /M4 是极限。这是真的?我可以做些什么来在我们的构建中使用所有 12 个内核吗?

我正在使用以下命令行来运行构建:

"C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcpackages\vcbuild.exe" /M12 C:\Projects\solution1.sln

构建将其视为我根据构建运行所需的时间指定了一个核心,并且我收到的初始输出是:

1) Build started: Project: Project1, Configuration: Release

如果我在命令行中使用 /M4 而不是 /M12,则构建速度会快得多,并且我会收到以下内容作为起始输出:

5) Build started: Project: Project5, Configuration: Release
1) Build started: Project: Project1, Configuration: Release
2) Build started: Project: Project2, Configuration: Release
7) Build started: Project: Project7, Configuration: Release

我也尝试过不指定核心数,但它会将其视为机器只有一个核心或我指定了 /M1。

我检查了系统环境变量 NUMBER_OF_PROCESSORS,它仍然设置为 12。

对此的任何帮助将不胜感激。

-赛斯

4

1 回答 1

0

VCBuild不能为您的特定构建配置并行化四个以上的项目,这可能取决于您的特定项目配置。

比如我的理解(欢迎指正):

  1. VCBuild 无法 项目中并行化
  2. ProjectA当“ ”是先决条件(链接到)“ ”时,VCBuild 无法并行化两个项目ProjectB。相反,ProjectA将被构建,然后ProjectB将被构建,(链接到先前ProjectA构建的结果)。但是,“ ProjectA.lib”可以与“”并行构建ProjectB.lib,当它们都链接到“ ProjectC.exe”中时(尽管两者都ProjectA不能 ProjectB并行构建 ProjectC)。

那么,根据您的项目,VCBuild 似乎最多只能看到四个可以同时构建的项目?

(注意:恕我直言,上述两个限制没有根本原因;相反,我的印象是这两个限制都是由于历史上的内部/技术原因,因为 VCBuild 并不是真正打算成为“可扩展的构建服务器”。)

于 2011-06-08T22:16:23.693 回答