我有一個MSVC++項目由可執行文件,幾個自己的靜態庫和一些預編譯的靜態第三方庫組成。該exe使用增量鏈接,以加快構建時間。Exe執行完全鏈接時,庫更改,儘管增量鏈接
當我更改可執行項目中的.cpp文件時,編譯+鏈接非常快(< 10秒)。
但是,當我在我自己的一個庫中更改.cpp文件時,可執行項目似乎正在對其使用的每個庫執行完整鏈接。
我不太確定,如果它實際上是一個完整的鏈接,但從「vc90.pdb找不到」鏈接器警告,我可以告訴它鏈接到一些根本沒有改變的外部庫。
下面是項目結構的一個例子:
- 預編譯的第三方庫
ExtLib1
,ExtLib2
和ExtLib3
- 自己的圖書館
MyLib
,使用第三方的libExtLib1
- 自己的Exe
MyExe
,使用MyLib
和ExtLib1-3
在MyLib
更改.cpp文件,然後將導致MyExe
被鏈接到MyLib
,ExtLib1
,ExtLib2
和ExtLib3
,即使增量鏈接被打開。
一個完整的鏈接需要大約5分鐘在我的項目中,所以我問:有什麼方法可以重新鏈接只更改的庫?
我的圖書館是用/ Yu/Zi編譯的..我試圖禁用該庫的預編譯頭文件(即:去除/餘)但沒有太大的變化。也許鏈接器實際上試圖做一個增量鏈接,但幾乎可以鏈接任何東西。明天將不得不進一步調查 – 2012-07-05 15:54:28