我怎樣才能讓VS 2010一次運行多個C++編譯過程?我的意思是平行構建目標模塊;我對一次構建多個項目不感興趣(我知道的工具>選項>構建並運行<並行項目構建的最大數量,但這不符合我的要求)。如何在Visual Studio 2010中執行並行生成?
基本上,我在尋找Visual Studio的「make -jN」的等價物。
我怎樣才能讓VS 2010一次運行多個C++編譯過程?我的意思是平行構建目標模塊;我對一次構建多個項目不感興趣(我知道的工具>選項>構建並運行<並行項目構建的最大數量,但這不符合我的要求)。如何在Visual Studio 2010中執行並行生成?
基本上,我在尋找Visual Studio的「make -jN」的等價物。
此外,羅斯史密斯在評論中說,你還需要打開項目中的「多處理器編譯」選項:
這沒有任何效果。將它設置爲0(默認值,意思是「使用所有內核」)或4(實際內核數量)沒有任何區別,但它一次只能構建一個模塊。 – 2011-05-30 04:22:15
@Ross:當這種並行構建生效時,它不會顯示在控制檯輸出中(與項目並行構建不同)。你是否通過查看任務管理器來驗證它沒有發生,或者你只是沒有看到控制檯上的任何東西?您應該看到與核心數量相同的'cl.exe'數量。 – 2011-05-30 04:24:20
我在Process Explorer中看過它,只有一個cl.exe進程,它只是執行四個內核之一。 – 2011-05-30 04:29:08
jom是您正在查找的工具。
從維基於:http://qt-project.org/wiki/jom
JOM是NMAKE的克隆來支持多個獨立 命令的並行執行。它基本上增加了類似於GNU make的-j命令 行開關。
雖然大多數的文件是針對Qt開發人員試圖加快Qt庫的基礎上的窗戶,JOM應該在非Qt的項目很好地工作過,只要你有一個NMAKE生成文件兼容。
維基頁面有你可以下載的二進制文件,你可以打電話給jom。
不幸的是,我發現jom很漂亮,並且通常不會得到一個進程終止掛起,直到世界結束。 – Lothar 2014-02-25 05:59:42
Necrolis的評論似乎是正確的解決方案。
/MP (Build with Multiple Processes)
的/ MP選項使編譯器在單獨的過程來創建自身的 一個或多個拷貝,每個。這些副本同時編譯源文件 。因此,構建源文件的總時間可以顯着減少。
注意,您可以在項目級設置(因此它會應用到所有文件),以及對單個文件,例如有用的,如果你需要使用#import
。
特別是,/ MP通常與預編譯頭文件不兼容,或者使用#import
;在這種情況下,您仍然可以在項目上設置/ MP標誌,然後在單個文件(通常是stdafx.cpp以及使用#import的任何文件)上清除它。
這裏是我做過什麼
1)進入工具 - >選項比下「項目和解決方案」 - >「建立和運行」對我來說有內核的數量。雖然起初我以爲這是我需要做的,但它不是
2)右鍵單擊您的項目並選擇屬性。在「配置屬性」 - >「C/C++」 - >「命令行」下輸入/MP4
,其中4是您擁有的核心數。 3)轉到「配置屬性」 - >「C/C++」 - >「代碼生成」下面有「啓用最小重建」。將其改爲no。
重建,你應該在你的任務管理器中看到多個CL進程。
有一些必須被設置爲使VS建立使用多線程兩個開關(均爲項目特異性):
檢查您的工具 - >選項 - >項目和解決方案 - > VC++項目設置 - >最大併發C++編譯設置。默認值是0,它使VS能夠儘可能多地使用併發編譯。
何時需要禁用最小重建才能使用多處理器編譯? – 2014-03-04 15:58:17
總是因爲它們不兼容。 – dimon4eg 2018-01-17 15:25:45
我明白了!您的要求是在並行線程中構建單個項目。
我發現Shark compiler Control插件非常有用
http://msdn.microsoft.com/en-us/library/bb385193.aspx – Necrolis 2011-05-30 09:46:18
只是小打小鬧的也許這有助於[鏈接](HTTP://博客。 msdn.com/b/visualstudio/archive/2010/03/08/tuning-c-build-parallelism-in-vs2010.aspx) – ervinbosenbacher 2012-04-06 20:50:46