【UE5】コマンドラインでBinariesをビルドする
プログラマーの尾関です。
UE5.5.3 の環境で、Binaries をコマンドラインビルドする際に、少し引っかかったところがあるので問題点と対処法について紹介したいと思います。
問題点:MSBuild.exe を直接呼び出すと正常にビルドできないことがある
過去のプロジェクト (UE5.2 あたり) では、slnファイルをコマンドラインから生成して MSBuild.exe を直接呼び出してビルドをしていました。例えば以下のコマンドです。
set MS_BUILD_EXE=C:\Program Files\Microsoft Visual Studio\2022\Professional\MSBuild\Current\Bin\MSBuild.exe
:: ビルド実行
"%MS_BUILD_EXE%" MyProject.sln /m /t:build /p:Configuration=Development;Platform=Win64
ですが、UE5.5.3 で試したところ以下のエラーが出てしまいました。
C:\Program Files\dotnet\sdk\9.0.200\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targe
ts(266,5): error NETSDK1004: 資産ファイル 'project.assets.json' が見つかりません。
NuGet パッケージの復元を実行して、このファイルを生成してください
「NuGet パッケージの復元」という謎のエラーが出てきました。
そこで slnファイル生成後に以下のコマンドを実行。
:: NuGetパッケージの復元.
dotnet restore MyProject.sln
これで正常にビルドできる…と思ったのですが、今度は別のエラーとなります。
C:\Program Files\Epic Games\UE_5.5\Engine\Plugins\ScriptPlugin\Source\ScriptGeneratorUbtPlugin\ScriptCodeGener
atorBase.cs(12,7): error CS0246: 型または名前空間の名前 'UnrealBuildTool' が見つかりませんでした (using ディレク ティブまたはアセンブリ参照が指定されていることを確認
してください) [C:\Program Files\Epic Games\UE_5.5\Engine\Plugins\ScriptPlugin\Source\ScriptGeneratorUbtPlugin\ScriptGe
neratorUbtPlugin.ubtplugin.csproj]
UnrealBuildTool
のアセンブリへの参照を変更すればビルドできるとの情報もあったのですが、調査に時間がかかりそうなのでひとまず社内の別プロジェクトの方に相談したところ、エンジンが提供している Build.bat を使う方法を教えてもらったのでそれで対処しました。
対処方法:「Engine/Build/BatchFiles/Build.bat」を使う
エンジンが提供している Build.bat を使ってビルドするには、例えば以下のコマンドでビルドを行います。
:: バッチファイルのある場所.
set BUILD_BAT=C:\Program Files\Epic Games\UE_5.5\Engine\Build\BatchFiles\Build.bat
:: プラットフォーム
set BUILD_PLATFORM=Win64
:: ビルドコンフィギュレーション.
set BUILD_CONF=Development
:: プロジェクトファイル
set UPROJECT_FILE=MyProject.uproject
:: ビルド実行
"%BUILD_BAT%" UnrealEditor %BUILD_PLATFORM% %BUILD_CONF% %UPROJECT_FILE% -WaitMutex -FromMsBuild
- 説明
- UnrealEditor: ターゲット。この例ではエンジンを改造していないのでこの名前です
-WaitMutex
: ビルドプロセスが完了するまで待機するオプション-FromMsBuild
: Microsoft Buildからの呼び出しであることを示すフラグ
この方法であれば sln ファイルを作る必要がないので、お手軽感がありますね。
以上、コマンドラインでBinaries をビルドする方法でした。