Skip to content

C++|ビルド時間短縮

並列ビルド

make なら-j<N>オプションをつけるとNスレッドでビルドしてくれる
直接makeをたたけない場合でもexport MAKEFLAGS="-j<N>"で環境変数に設定することでバックエンドのmakeに指示できる
ninjaの場合はexport NINJAJOBS=<N>で指示できる

バックエンドをninjaにする

makeよりかなり早いらしい

cmakeなら-G ninjaオプションをつけるとバックエンドをninjaにすることができる

リンカーにmoldを使う

結構早いらしい

ccacheを使う

2回目以降をキャッシュを有効活用して爆速にしてくれる

ヘッダー記述量を減らす

ヘッダーはインクルードしているソースファイルすべてに展開されるため、実装をソースファイルに移動するだけでかなりのビルド時間削減が期待できる
pimplイディオムなども使える

インクルードを減らす

「インクルードする=ビルドするソースコード量の増大」なので避けたい
具体的なクラスの実装が必要ない場合はインクルードせずに前方宣言だけで済ませたりできる