私はcmakeのが提供する特定の可能性を活用し、より一般的なガイダンスがある場合、私は思っていた、("At what level should I distribute my build process?"または"cmake rebuild_cache for just a subdirectory?"など)、最近C++プロジェクトを有効にCMakeのターンアラウンドタイムの向上の特定の側面に関するいくつかのSOの質問に出くわしました。おそらく、クロスプラットフォームのコンパイル時間の最適化がない場合、私は主にVisual StudioやGNUのあまりにも簡単な方法に興味があります。CMake対応のC++プロジェクトのコンパイル時間を短縮するには?
そして、私はすでにの意識だとスピードアップするために、一般的に推奨される分野に投資するC++のビルド:
変更/最適化/微調整ツールチェーン
は/あなたのコードベースを最適化ソフトウェアアーキテクチャ(例えば、依存関係を減らし、明確に定義されたサブプロジェクトを使用することによってユニットテスト)
(推奨here、hereまたはhereなど)。だからこの質問の焦点は最初の点です。
プラス私CMakeののWikiにする勧告を知っている:前者はちょうど基礎(パラレルメイク)を扱う、後でハンドルは、主にどのように
CMakeファイルの解析をスピードアップします。ちょうどこのもう少しコンクリートを作るために
私はMSYS/GNUを使用して100のライブラリとhereから私CMakeの例を取る場合、私は次のtime
測定結果ました:だから私は〜の合計を
$ 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を成功させましたが(firefox、数年前) –