2013-01-03 110 views
0

我有一個包含許多文件的C++項目。當我構建的項目對代碼進行了很小的更改時,它會重新編譯大量的文件。這增加了項目的編譯時間。所以我需要建議我可以改進項目結構或其他可能的優化,這將有助於縮短項目的編譯時間。 還有一些文件即使在我沒有對項目進行更改時也會重新編譯。不知何故,使不會檢測到這些文件不需要重新編譯或可能是我失去了一些東西。在Codelite上編譯項目(C++)重新編譯太多文件

我在我的項目上使用Linux上的Codelite(Ubuntu)。該語言是C++。

+1

我不認爲它必須做任何與codelite。檢查http://stackoverflow.com/questions/318398/why-does-c-compilation-take-so-long和http://stackoverflow.com/questions/373142/what-techniques-can-be-used-to -speed-up-c-compilation-times – abnvp

+0

即使codelite沒有問題,是否有辦法減少重新編譯的文件數量?例如,一種方法是使用前向聲明。 目前即使我不做任何更改,某些文件也會被重新編譯。爲什麼?是否還有其他技術(如前向聲明)來減少編譯時間。 – Kriateive

+0

檢查我提到的第二個鏈接。該帖子詳細告訴你如何縮短編譯時間 – abnvp

回答

0

上面提供的鏈接會給你一個詳細的解釋。只是爲了讓它更輕鬆一些,我還添加了更多的東西。

如果您在CPP文件中更改某些內容,則只會重新編譯該文件。如果它是一個頭文件,那麼它將是一個不同的故事。如果在多個模塊中包含一個頭文件,並且對該頭文件進行了更改,則所有關聯的CPP文件都將進行編譯,並且應該是這樣。所以如果你真的關心這方面的問題,在編寫代碼時你需要小心。在稍後的階段,將難以管理這些事情。

對於一些文件的編譯,即使你不改變任何事情的時候

1]我們告訴編譯器這樣做可能發生。

2]一些CPP或頭文件生成或自動修改而運行構建

3]有在文件時間戳的變化

4]存在文件夾名稱/結構

的變化

最後但並非最不重要,也嘗試更改代碼精簡版構建目標。

這些是我所知道的可能性。會有更多的[絕對:)] ... ...

+0

是的,上面的鏈接非常有幫助。減少了一些我的cpp文件重新編譯,但仍然不是全部。 不,我在編譯期間沒有生成任何文件。儘管如此,即使在整個項目中沒有任何變化,仍然有文件被重新編譯。 – Kriateive

+0

@Kriateive:請檢查第3位和第4位是不是這種情況。嘗試更改代碼精簡版構建目標選項 – NeonGlow

+0

感謝您的幫助。我終於找到了使用--debug = vi和Codelite生成的makefile的問題。問題是它已經列出了一些文件作爲實際刪除的先決條件。因此,每次發出make時,由於找不到先決條件,它會爲這些文件集發出命令。遞歸依賴使事情變得更糟。 刪除和重新生成makefile工作正常。 但上面提到的鏈接和你的提示幫助我減少了依賴關係,並改善了項目的小改動的重建時間。感謝:) – Kriateive