私は巨大なプロジェクトを持っています。C++コードの約150000LOCです。ビルド時間は約15分です。このプロジェクトは、さまざまなサイズの多くのサブプロジェクトで構成されています。
サブプロジェクトごとに個別のプリコンパイル済みヘッダーを作成しましたが、それらを使用すると、作成時間はほぼ同じになります。ビルド時間は5〜10%短縮され、それ以上ではないようです。
プリコンパイル済みヘッダーは間違いなく使用されています。オプションを使用し、コンパイラオプションを使用-Winvalid-pch
してコンパイルしようとしました-H
。プリコンパイル済みヘッダーは、出力に「bang」記号で表示されます。これは、コンパイラがプリコンパイル済みヘッダーを使用できることを意味します。
私のプリコンパイル済みヘッダーはすべてそれほど大きくはなく、すべてのファイルは約50Mbです。ここにあるpythonスクリプトを使用して、最も使用されているプリコンパイル済みヘッダーのリストを生成しているので、プリコンパイル候補のリストは非常に優れています。
ビルドを最適化するための無料/オープンソースツールはありますか?標準make
ユーティリティには、さまざまなターゲットのビルド時間を測定する機能がないようです。を使用してさまざまなターゲットの統計を取得する方法が見つかりませんmake
。依存関係の分析や高度なことについて話しているのではありません。ほとんどの場合、どのターゲットが無駄になっているのか知りたいだけです。
また、GCCはプリコンパイル済みヘッダーの処理において非常に非効率的であるように見えました。サブプロジェクトのビルドを著しく速くすることはできませんでした。ビルドに3分かかるプロジェクトでは、最大スピードアップは20%です。GCCを使用したLinuxでのビルド時間を最適化するよりも、ソリッドステートドライブを備えた高速のマシンを購入する方が簡単で安価なようです。