#縁の下の力持ち UBT
UE4のコンパイルを統括しているツールがUnrealBuildToolです。
ビルドが必要か判断してビルドを行ったり、事前処理を自動でやってくれたりいろいろな処理を行っています。
大変重要なツールではありますが、上手く行っているときは縁の下の力持ち的なあまり意識しないくても良いツールでもあります。
しかし場合によっては意図通りに動いてくれないことがあります。
##詳細なログを出して動作を調べよう
標準の設定ではUBTはあまり多くのことをログに出力しませんが、ソースを見てみると結構たくさんログを出力してくれるようになっていることがわかります。
public UEBuildModuleCPP(ModuleRules Rules, DirectoryReference IntermediateDirectory, DirectoryReference GeneratedCodeDirectory)
: base(Rules)
{
this.IntermediateDirectory = IntermediateDirectory;
this.GeneratedCodeDirectory = GeneratedCodeDirectory;
foreach (string Def in PublicDefinitions)
{
Log.TraceVerbose("Compile Env {0}: {1}", Name, Def);
}
foreach (string Def in Rules.PrivateDefinitions)
{
Log.TraceVerbose("Compile Env {0}: {1}", Name, Def);
}
UBTにもEditorと同じようにVerbosityの設定があり、これを変更することでより詳細なログを出すことができます。
有効化するにはVisualStudioのスタートアッププロジェクト(BlueprintProjectならUE4、C++Projectなら自分のプロジェクト)のプロパティを開きNMake->Build Command Line/ Rebuild Command Line に -Verbose
と追記します。
大量のログが出力されてビルド時間が余計にかかると思いますので、不要な時は消してくださいね。
##追記:もうひとつの方法~Build.batを編集する
上のソリューション中のプロパティにもあるようにビルドはEngine\Build\BatchFiles.Build.batを呼び出すことで起動します。
このバッチファイル中にオプションを加えてしまうことでももちろん詳細ログを得ることが可能です。
以下のようにUBTを起動している行の末尾に -verbose
を追加します
IF EXIST ..\..\Engine\Binaries\DotNET\UnrealBuildTool.exe (
..\..\Engine\Binaries\DotNET\UnrealBuildTool.exe %* -verbose
popd
REM Ignore exit codes of 2 ("ECompilationResult.UpToDate") from UBT; it's not a failure.
if "!ERRORLEVEL!"=="2" (
EXIT /B 0