52

我怎樣才能讓VS 2010一次運行多個C++編譯過程?我的意思是平行構建目標模塊;我對一次構建多個項目不感興趣(我知道的工具>選項>構建並運行<並行項目構建的最大數量,但這不符合我的要求)。如何在Visual Studio 2010中執行並行生成?

基本上,我在尋找Visual Studio的「make -jN」的等價物。

+1

http://msdn.microsoft.com/en-us/library/bb385193.aspx – Necrolis 2011-05-30 09:46:18

+0

只是小打小鬧的也許這有助於[鏈接](HTTP://博客。 msdn.com/b/visualstudio/archive/2010/03/08/tuning-c-build-parallelism-in-vs2010.aspx) – ervinbosenbacher 2012-04-06 20:50:46

回答

30
  1. 工具 - >選項
  2. 項目和解決方案\ VC++項目設置
  3. 最大併發C++編譯

此外,羅斯史密斯在評論中說,你還需要打開項目中的「多處理器編譯」選項:

  1. 項目屬性
  2. 配置屬性> C/C++>常規
  3. 多處理器編譯
  4. 利潤!
+2

這沒有任何效果。將它設置爲0(默認值,意思是「使用所有內核」)或4(實際內核數量)沒有任何區別,但它一次只能構建一個模塊。 – 2011-05-30 04:22:15

+1

@Ross:當這種並行構建生效時,它不會顯示在控制檯輸出中(與項目並行構建不同)。你是否通過查看任務管理器來驗證它沒有發生,或者你只是沒有看到控制檯上的任何東西?您應該看到與核心數量相同的'cl.exe'數量。 – 2011-05-30 04:24:20

+0

我在Process Explorer中看過它,只有一個cl.exe進程,它只是執行四個內核之一。 – 2011-05-30 04:29:08

3

jom是您正在查找的工具。

從維基於:http://qt-project.org/wiki/jom

JOM是NMAKE的克隆來支持多個獨立 命令的並行執行。它基本上增加了類似於GNU make的-j命令 行開關。

雖然大多數的文件是針對Qt開發人員試圖加快Qt庫的基礎上的窗戶,JOM應該在非Qt的項目很好地工作過,只要你有一個NMAKE生成文件兼容。

維基頁面有你可以下載的二進制文件,你可以打電話給jom。

+0

不幸的是,我發現jom很漂亮,並且通常不會得到一個進程終止掛起,直到世界結束。 – Lothar 2014-02-25 05:59:42

14

Necrolis的評論似乎是正確的解決方案。

/MP (Build with Multiple Processes)

的/ MP選項使編譯器在單獨的過程來創建自身的 一個或多個拷貝,每個。這些副本同時編譯源文件 。因此,構建源文件的總時間可以顯着減少。

注意,您可以在項目級設置(因此它會應用到所有文件),以及對單個文件,例如有用的,如果你需要使用#import

特別是,/ MP通常與預編譯頭文件不兼容,或者使用#import;在這種情況下,您仍然可以在項目上設置/ MP標誌,然後在單個文件(通常是stdafx.cpp以及使用#import的任何文件)上清除它。

4

這裏是我做過什麼

1)進入工具 - >選項比下「項目和解決方案」 - >「建立和運行」對我來說有內核的數量。雖然起初我以爲這是我需要做的,但它不是

2)右鍵單擊您的項目並選擇屬性。在「配置屬性」 - >「C/C++」 - >「命令行」下輸入/MP4,其中4是您擁有的核心數。 3)轉到「配置屬性」 - >「C/C++」 - >「代碼生成」下面有「啓用最小重建」。將其改爲no。

重建,你應該在你的任務管理器中看到多個CL進程。

15

有一些必須被設置爲使VS建立使用多線程兩個開關(均爲項目特異性):

  • 項目屬性 - > C/C++ - >通用>多處理器編譯設置爲:是(/ MP)
  • 項目屬性 - > C/C++ - >代碼發生 - >啓用最少重建設置爲:否(/ GM-)

檢查您的工具 - >選項 - >項目和解決方案 - > VC++項目設置 - >最大併發C++編譯設置。默認值是0,它使VS能夠儘可能多地使用併發編譯。

+2

何時需要禁用最小重建才能使用多處理器編譯? – 2014-03-04 15:58:17

+0

總是因爲它們不兼容。 – dimon4eg 2018-01-17 15:25:45

0

我明白了!您的要求是在並行線程中構建單個項目。

我發現Shark compiler Control插件非常有用

相關問題