UnrealBuildTool(UBT)はエンジンやプロジェクトのc++ネイティブコードをビルドするためのツールです。
難しいことを考えずにビルドをするだけで必要な処理を解析して勝手に起動に必要なバイナリを作成してくれる便利なツールですが、
開発していると稀にUBTの動作が意図通りに行われないことに遭遇しデバッグしたくなることがあります。
本記事ではUBTのデバッグ方法について解説します。
なお UE4.25.3 + VisualStudio2019 の環境に基づいて書かれています。
#ビルド時に渡されているオプションを調べる
まずUBTを起動させるときに対象となるプロジェクトを指定しなければなりません。
基本的には -target=[ターゲット名(プロジェクト名+Editor)] Win64 Development -Project="プロジェクトファイルのパス"
となります。
-Target="SimpleLoadingScreenEditor Win64 Development -Project=\"D:\dev\UE425projects\SimpleLoadingScreen\SimpleLoadingScreen.uproject\"" -Target="ShaderCompileWorker Win64 Development -Quiet" -WaitMutex -FromMsBuild -verbose
上手く行かない場合は-verboseログを有効にしてビルドするとログから確認できます。
-verboseオプションについてはこちらの記事をご確認ください → https://qiita.com/EGJ-Takashi_Suzuki/items/b2134bee42afaf2db766
#ソリューションの設定と起動
まずソリューション中のUnrealBuildToolを選択して Set as startup project を選択します。
次に、UnrealBuildToolプロジェクトのプロパティを開き、「Debug」カテゴリの CommandLineArguments に調べておいたオプションを記述します。
これで準備完了です。
あとはStepInto(F11)でプログラムの先頭から実行するか、
BuildMode.csのBuild関数や、問題の個所がわかっていればそちらにブレイクポイントを張ってからRun(F5)でデバッグを開始できます。
#おまけ
##対象のヘッダファイルにUHTが起動される判定
Intermediate\Build\Win64\プロジェクト名\Inc\モジュール名\timestamp
と
ヘッダのタイムスタンプを比較している
##ソースファイルに対して依存関係のあるファイルの確認
Intermediate\Build\Win64\UE4Editor\Development\YourProjectName\YourSourceFile.cpp.txt
のようなファイルに
cl-filter.exeを通じて得られた依存関係のあるファイルが出力されている