我有一個很大的二進制文件,它由許多靜態庫和獨立的cpp文件構成。它被配置爲使用增量鏈接,所有優化都被/Od
禁用 - 它是調試版本。增量鏈接的低性能
我注意到,如果我改變任何獨立的CPP文件,然後增量鏈接運行速度快 - 1分鐘。但是如果我在任何靜態庫中更改任何cpp,那麼它將運行很長 - 10分鐘,與普通鏈接相同。在這種情況下,我從增量鏈接中獲益不大。可以加速嗎?我使用VS2005。
我有一個很大的二進制文件,它由許多靜態庫和獨立的cpp文件構成。它被配置爲使用增量鏈接,所有優化都被/Od
禁用 - 它是調試版本。增量鏈接的低性能
我注意到,如果我改變任何獨立的CPP文件,然後增量鏈接運行速度快 - 1分鐘。但是如果我在任何靜態庫中更改任何cpp,那麼它將運行很長 - 10分鐘,與普通鏈接相同。在這種情況下,我從增量鏈接中獲益不大。可以加速嗎?我使用VS2005。
在鏈接器常規屬性頁面中爲您的項目設置"Use Library Dependency Inputs"。這將鏈接個人.obj文件從依賴.lib而不是.lib,這可能會有一些不同的副作用。
我同意,這個設置對於加速鏈接非常有用。 –
是的 - 這直接回答了問題。我曾經在Visual Studio 2003中使用名爲Xoreax Incredibuild的產品;它有一個名爲「Incredilink」的功能,就是這樣做的。它對減少構建時間有巨大的影響。它似乎直接將功能拉入Visual Studio 2005. –
@MSN謝謝。我的項目類型是MakeFile項目。這種類型的項目中沒有鏈接器屬性頁面。無論如何,我可以設置這個屬性嗎?或者將它傳遞給鏈接器命令行?無論如何+1的答案。 – ks1322
我會給你一個不同類型的答案。硬件。
你的開發環境是什麼?無論如何要獲得更多的RAM或將您的項目放到固態硬盤上?我發現在我的工作項目中,使用SSD可以加快我的鏈接時間一個數量級。爲編譯時間提供了一點幫助,但鏈接很大。獲得更快的系統當然也有幫助。
+1用於硬件解決方案。 SSD會加快速度。幾乎-1爲其他建議,如RAM(多大應該是一個項目,鏈接需要比主流2-4-6 GB的RAM更多?)或更快的系統(你的意思是什麼系統?) –
你會驚訝於什麼人們試圖在@Andy上編碼的一種系統。當我從較舊的雙核2Gig RAM WinXP機箱升級到四核8gig Win7機箱時,一切都變得更快了。沒有SSD那麼大,但差異值得一提。 –
+1 for SSD存儲 – ks1322
如果我理解正確(在使用Visual Stuio幾年後),增量鏈接功能不適用於作爲靜態庫一部分的對象文件。
解決此問題的一種方法是重構您的解決方案,以便您的應用程序項目包含所有源文件。
謝謝。你可以提供鏈接到MSDN或其他資源來確認這一點嗎?我想確保增量鏈接對於來自靜態庫的目標文件是不可能的。 – ks1322
對不起,這是基於我自己的工具使用經驗。 – Lindydancer
您是否只更改實際的.lib或頭文件,在最後一種情況下它不是真的可行(但您可以從使用pch中看到一些好處)。 – KillianDS
我正在更改.lib中的一個cpp文件。 – ks1322
檢查.lib項目中的/ Yu和/ Z7選項。 –