我偶然發現了幾個關於改進CMake C++項目週轉時間的SO問題(如"At what level should I distribute my build process?"或"cmake rebuild_cache for just a subdirectory?"),我想知道是否有利用CMake提供的特定可能性的更一般的指導。如果可能沒有跨平臺編譯時優化,我主要對基於Visual Studio或GNU toochain的方法感興趣。如何加快我的CMake C++項目的編譯時間?
而且我已經瞭解並投資進入一般建議方面加快C++構建:
更改/優化/微調工具鏈
優化你的代碼庫/軟件體系結構(例如,通過減少的依賴關係,並使用良好定義的子項目 - 單元測試)
投資在一個更好的硬件(SSD,CPU,存儲器)
like like recommended here,here or here。所以我在這個問題上的重點是第一點。
另外,我知道的建議中的CMake的Wiki上找到:
前者只處理基本知識(並行make),後來把手大多是如何加快解析CMake文件。
只是爲了使這個多一點具體的,如果我從使用MSYS/GNU here 100庫我得到了以下time
測量結果我的CMake的例子:
$ cmake --version
cmake version 3.5.2
CMake suite maintained and supported by Kitware (kitware.com/cmake).
$ time -p cmake -G "MSYS Makefiles" ..
-- The CXX compiler identification is GNU 4.8.1
...
-- Configuring done
-- Generating done
-- Build files have been written to: [...]
real 27.03
user 0.01
sys 0.03
$ time -p make -j8
...
[100%] Built target CMakeTest
real 113.11
user 8.82
sys 33.08
所以我有一個總的〜 140秒,我的目標 - 這個公認的非常簡單的例子 - 就是將其降低到標準設置/工具的10-20%。
此外,使用的ccache。它使瘋狂快速重新編譯。 – csl
如果您的構建系統正在進行增量重建,ccache應該沒有什麼幫助。在精心編寫的cmake構建中,增量構建是正確的,ccache實際上會減慢你的開銷。在過去,我曾在ccache上成功地使用sucky編譯系統進行增量編譯,但是(firefox,多年前) –