使用VCBuild使用4个以上的内核

时间:2011-06-07 18:34:15

标签: visual-studio-2008 build multicore vcbuild

我正在尝试使用构建服务器的所有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。

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

-Seth

1 个答案:

答案 0 :(得分:0)

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

例如,我的理解(随意纠正):

  1. VCBuild无法在中并行化 一个项目
  2. VCBuild无法并行化 当“ProjectA”是一个时,有两个项目 先决条件(链接) “ProjectB”。相反,ProjectA会 建立,然后ProjectB将 built,(链接在之前ProjectA版本的结果中)。 但是,“ProjectA.lib”可以构建 平行于“ProjectB.lib”,何时 然后他们都被链接到“ProjectC.exe” (虽然ProjectA也没有。{ ProjectB可以并行构建 ProjectC)。
  3. 那么,根据您的项目,VCBuild似乎最多只能看到四个能够同时构建的项目?

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