2014-01-15 29 views
0

是否有可能(很可能使用gcc/g ++本身?)來確定實際使用單個編譯包含的所有文件的哪些代碼行?聚集實際使用的C++代碼行

我使用了很多第三方包含,並希望將它們剝離到實際使用的代碼中以加快編譯速度。

也許g ++可以通過它的許多選項的某種組合來輸出?

+0

你可以使用一些第三方代碼作爲共享庫並動態鏈接它們,從而完全避免包含(的編譯時間)? – ssube

+0

有一個基於'libclang'的工具,它承諾了這一點。谷歌「Chandler Carruth包含工具」。我相信他早在GN2012中提到 – sehe

+0

嘗試將每個'include'都可以從.h文件移動到.c/.cpp文件。不是一個答案,而是通常的伎倆。 –

回答

1

我可以提供的最好建議是將巨大的包含文件分解成更小的部分。這允許開發人員僅包含解析符號所需的文件。

我最喜歡的例子是windows.h。巨型包含文件聲明整個Windows API,無論您是否需要它們。如果您只需要用於處理文件的API,則還可以獲得撥號盒的API。

一些像怪物一樣的商店包含文件,因爲它們只需要在源代碼中包含一個文件。一個缺點是每個源文件現在都依賴於大型包含文件。如果我更改了一個包含文件,整個系統將被重建,而不是依賴於我更改的頭文件的幾個模塊。

在我的項目中,一次只編譯幾個文件;通常小於5.這使平均週轉時間(修改然後構建)非常快。整個系統由服務器或開發人員在一夜之間重建。沒有必要重建沒有改變的源文件。

因此,分割你的模塊,所以你不是每次重建你的系統。

+0

我鬆散地記得mshtml.h,> 1mb的聲明地獄...如果標題也應該是一種文檔,那麼MS HTML的地方永遠不會被理解...... – dronus

相關問題