8

我有一個很大的二進制文件,它由許多靜態庫和獨立的cpp文件構成。它被配置爲使用增量鏈接,所有優化都被/Od禁用 - 它是調試版本。增量鏈接的低性能

我注意到,如果我改變任何獨立的CPP文件,然後增量鏈接運行速度快 - 1分鐘。但是如果我在任何靜態庫中更改任何cpp,那麼它將運行很長 - 10分鐘,與普通鏈接相同。在這種情況下,我從增量鏈接中獲益不大。可以加速嗎?我使用VS2005。

+0

您是否只更改實際的.lib或頭文件,在最後一種情況下它不是真的可行(但您可以從使用pch中看到一些好處)。 – KillianDS

+0

我正在更改.lib中的一個cpp文件。 – ks1322

+0

檢查.lib項目中的/ Yu和/ Z7選項。 –

回答

7

在鏈接器常規屬性頁面中爲您的項目設置"Use Library Dependency Inputs"。這將鏈接個人.obj文件從依賴.lib而不是.lib,這可能會有一些不同的副作用。

+0

我同意,這個設置對於加速鏈接非常有用。 –

+1

是的 - 這直接回答了問題。我曾經在Visual Studio 2003中使用名爲Xoreax Incredibuild的產品;它有一個名爲「Incredilink」的功能,就是這樣做的。它對減少構建時間有巨大的影響。它似乎直接將功能拉入Visual Studio 2005. –

+0

@MSN謝謝。我的項目類型是MakeFile項目。這種類型的項目中沒有鏈接器屬性頁面。無論如何,我可以設置這個屬性嗎?或者將它傳遞給鏈接器命令行?無論如何+1的答案。 – ks1322

2

我會給你一個不同類型的答案。硬件。

你的開發環境是什麼?無論如何要獲得更多的RAM或將您的項目放到固態硬盤上?我發現在我的工作項目中,使用SSD可以加快我的鏈接時間一個數量級。爲編譯時間提供了一點幫助,但鏈接很大。獲得更快的系統當然也有幫助。

+0

+1用於硬件解決方案。 SSD會加快速度。幾乎-1爲其他建議,如RAM(多大應該是一個項目,鏈接需要比主流2-4-6 GB的RAM更多?)或更快的系統(你的意思是什麼系統?) –

+0

你會驚訝於什麼人們試圖在@Andy上編碼的一種系統。當我從較舊的雙核2Gig RAM WinXP機箱升級到四核8gig Win7機箱時,一切都變得更快了。沒有SSD那麼大,但差異值得一提。 –

+0

+1 for SSD存儲 – ks1322

0

如果我理解正確(在使用Visual Stuio幾年後),增量鏈接功能不適用於作爲靜態庫一部分的對象文件。

解決此問題的一種方法是重構您的解決方案,以便您的應用程序項目包含所有源文件。

+0

謝謝。你可以提供鏈接到MSDN或其他資源來確認這一點嗎?我想確保增量鏈接對於來自靜態庫的目標文件是不可能的。 – ks1322

+0

對不起,這是基於我自己的工具使用經驗。 – Lindydancer