2009-08-19 57 views
1

我有一個由大約50個源文件組成的C++/CLI程序集。該程序集中的代碼靜態鏈接到許多C++庫,以執行各種「繁重」類型的任務。Visual Studio 8:在混合模式程序集中構建時間

我正在使用Visual Studio 8(2005)SP1來構建此程序集。

通過「僅限於項目」 - >「僅重建」在一個體面的雙核機器上花費大約4.5分鐘來構建這個程序集(沒有依賴關係等)。下面是縮寫構建輸出標註有近似時間:

Compiling... 
(file 0) 
(file 1) 
... 
(file N)     // About 2 min total to compile all files 
Linking...     // About 12s 
Generating Code   // 42s 
Finished Generating Code // < 1s 
Embedding Manifest   // < 1s 
Generating Code   // 30s 
Finished Generating Code 
(15 seconds of nothing) 
Done 

我應該如何開始調試爲什麼這個組件要花這麼長時間來構建?編譯和鏈接時間雖然不是很好,但可能與我對於這個規模的項目所期望的一樣。令我擔憂的是,我看到兩個「生成代碼」的步驟,每個步驟都比其他大多數項目花費的時間要長。

我的第一個猜測是,這與鏈接到程序集的非託管代碼的數量有關。但是,我有幾個託管的應用程序項目使用的本地代碼量非常多,並且構建時間非常合理。

有誰知道究竟會導致兩個'生成代碼'的步驟需要很長時間嗎?有沒有我錯過的項目設置?

回答

1

您是否爲項目使用了預編譯頭文件?託管C++以非託管C++的方式支持它。將您的項目切換爲預編譯頭文件:

請參閱this article(向下滾動到「預編譯頭文件」一節)以獲取詳細信息。

  • 確保每一個.cpp文件開始用#include「XXXX」,其中xxxx.h是一些頭文件,包括所有在項目中使用的通用的頭文件。
  • 創建xxxx.cpp文件僅包含xxxx.h文件,並沒有其他的代碼
  • 在VS編譯設置對整個項目,所有的配置(建立&釋放),在預編譯頭部分,使整個項目使用xxxx.h預編譯頭。
  • 僅在xxxx.cpp文件的VS編譯設置中,對於所有配置(構建&版本),在預編譯頭文件部分中,將其設置爲「生成預編譯頭文件」。

編譯項目現在應該佔用以前編譯時間的一小部分。

相關問題