はじめに
octobuildはUnreal Engine用のビルド高速化ツールです.
動作原理
ccache
やicecream
と同じくコンパイルコマンドを元にコンパイル結果をキャッシュすることでビルドを高速化します. つまり2回目から速くなります.
また, Incredibuild
の振りをしているので併用はできません. Incredibuild
にもキャッシュ機能があるので, 併用する意味はありません.
インストール
インストーラがあるので, そのまま実行してもらうといいです.
2023/12の時点では, キャッシュディレクトリの扱いに不具合があるらしく工夫が必要です. (気が向いたらIssueなりPull Requestを投げる.)
Windowsのマイ ドキュメント
以下がキャッシュ保存ディレクトリのデフォルトなのですが, ディレクトリへのアクセス処理が不具合を起こしているようです. 特殊フォルダあるあるです.
次のどちらかに設定ファイルを作成して, キャッシュディレクトリを変更します.
C:\ProgramData\octobuild\octobuild.conf
C:\Users\<user_name>\AppData\Roaming\octobuild\config\octobuild.conf
例えば次のようにします.
cache: C:\octobuid\cache
cache_limit_mb: 65536
cache_compression_level: 1
coordinator: null
coordinator_bind: 0.0.0.0:3000
helper_bind: 0.0.0.0:0
process_limit: 16
run_second_cpp: true
use_response_files: true
さらに, octobuild
のサービスは起動時に設定ファイルをロードしているので, 設定ファイル変更後はWindowsを再起動するといいでしょう.
トラブルシューティング
- オブジェクトファイルが壊れている等のエラーでビルドが失敗する.
- 動作原理的にコンパイル時の環境で追えない環境変化, グローバルなプリプロセッサマクロの変化などに弱いです. 何かおかしいなと思ったら,
xgConsole /reset
を試してみてください.
- 動作原理的にコンパイル時の環境で追えない環境変化, グローバルなプリプロセッサマクロの変化などに弱いです. 何かおかしいなと思ったら,
計測
軽く計測しました。
CPU | Ryzen 7 7700 |
Memory | DDR5-4800 64GB |
キャッシュSSD | CT2000MX500SSD1 |
エンジンHDD | 7200rpm SATA |
msvc
とキャッシュ
はSSD, エンジンのソースコードはHDDに置いてあります.
エンジンのソースコードをHDDに置いてしまっているのがいけないのかもしれない. ただ確実に速くはなるようです. あとはキャッシュを共有できるかです, どう設定したらいいのでしょう.
- 初回
Cache statistic: hit 0 of 2748 (0 %), remote 0, read 0, write 14556535849, total 14556535849
Total time in XGE executor: 10455.87 seconds
Total execution time: 11060.79 seconds
- リビルド
Cache statistic: hit 2745 of 2748 (99 %), remote 0, read 14554198893, write 2336983, total 14556535876
Total time in XGE executor: 9843.48 seconds
Total execution time: 10390.62 seconds