ue4:buildsystem
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン次のリビジョン両方とも次のリビジョン | ||
ue4:buildsystem [2020/08/22 22:04] – [UnrealHeaderTool Build の回避] oga | ue4:buildsystem [2022/03/17 14:22] – [使用する分散ビルドの選択] oga | ||
---|---|---|---|
行 4: | 行 4: | ||
その中心になるのが C# で記述された UnrealBuildTool になります。 | その中心になるのが C# で記述された UnrealBuildTool になります。 | ||
- | 各 Module の Build file (Makefile 相当) も *.Build.cs と言う名前の C# で書かれています。 | + | 各 Module のビルド定義 |
主に2つの機能があります。 | 主に2つの機能があります。 | ||
行 11: | 行 11: | ||
* ビルドの実行 | * ビルドの実行 | ||
- | Project File の生成は Debug など IDE を利用するためのものであって、ビルドそのものには利用していません。 | + | IDE 向けに生成する |
- | ビルド自体は UnrealBuildTool が行います。 | + | IDE Native のビルドツールは使われておらず、ビルドそのものは UnrealBuildTool が行っています。 |
行 38: | 行 38: | ||
^ Executor | ^ Executor | ||
| LocalExecutor | | LocalExecutor | ||
- | | ParallelExecutor | + | | ParallelExecutor |
| XGE | 有料の分散ビルドツール IncrediBuild を install している場合に使用します。CPU/ | | XGE | 有料の分散ビルドツール IncrediBuild を install している場合に使用します。CPU/ | ||
| HybridExecutor | | HybridExecutor | ||
| SNDBS | SONY の分散ビルドツール SN-DBS を install している場合に使用します。 | | SNDBS | SONY の分散ビルドツール SN-DBS を install している場合に使用します。 | ||
| Distcc | | Distcc | ||
+ | | FASTBuild | ||
行 59: | 行 60: | ||
例えば UE4 Engine の場合、Engine/ | 例えば UE4 Engine の場合、Engine/ | ||
- | dll は必要なときしか作られないため cache としても機能します。 | + | dll は必要なときにしか作られないため cache としても機能します。 |
行 104: | 行 105: | ||
==== Unity Build ==== | ==== Unity Build ==== | ||
- | UnrealBuildTool はデフォルトで UnityBuild を行います。設定で無効化することができます。 | + | UnrealBuildTool はデフォルトで UnityBuild を行います。BuildConfiguration.xml の設定で無効化することができます。 |
UnityBuild を有効にすると複数のソースコードを単一のファイルにまとめてコンパイルを行います。ビルド時間を大幅に短縮することができます。 | UnityBuild を有効にすると複数のソースコードを単一のファイルにまとめてコンパイルを行います。ビルド時間を大幅に短縮することができます。 | ||
行 133: | 行 134: | ||
+ | ==== ビルド速度の調整 ==== | ||
+ | |||
+ | === ParallelExecutor のビルドスレッド数 === | ||
+ | |||
+ | ParallelExecutor はすべてのスレッドを使用するとは限りません。 | ||
+ | 最大速度でビルドを行いたい場合は BuildConfiguration.xml への設定が必要です。 | ||
+ | |||
+ | 例えば物理コアが 6個である場合はデフォルトで 6スレッドでビルドが行われます。 | ||
+ | HyperThreading の 12スレッド分すべて使ってビルドを行いたい場合は、下記のように倍率として 2.0 を設定します。 | ||
+ | |||
+ | <code xml> | ||
+ | <?xml version=' | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ただし RAM 容量が少ない場合は指定した数だけビルドを走らせることができません。 | ||
+ | ParallelExecutor は RAM の空き容量によって最大スレッド数を制限しています。 | ||
+ | |||
+ | UnityBuild は非常にメモリを消費するので、RAM が少ない場合はむやみにビルドスレッド数を増やさないようにしてください。 | ||
+ | SN-DBS や FASTBuild では RAM 容量に関係なくビルドスレッド数を増やすことができますが、増やしすぎるとスラッシングが発生しビルド速度が著しく低下します。 | ||
+ | |||
+ | RAM が 32GB の場合は、最大でも 8~12 スレッド程度にとどめておくことをおすすめします。 | ||
行 148: | 行 175: | ||
- | 上記のように < | + | 上記のように < |
例えば下記の UFUNCTION() はどちらも < | 例えば下記の UFUNCTION() はどちらも < | ||
行 204: | 行 231: | ||
+ | 空の Engine/ | ||
+ | UAT が外部ツールをビルドするのを回避することができます。 | ||
行 223: | 行 252: | ||
* USER_DIR = C:/ | * USER_DIR = C:/ | ||
+ | |||
+ | Linux と macOS の場合は次の場所になります。 | ||
+ | |||
+ | - $ENGINE_DIR/ | ||
+ | - $HOME/ | ||
+ | - $HOME/ | ||
+ | |||
+ | **BuildConfiguration.xml に定義可能なパラメータの詳細は $ENGINE_DIR/ | ||
+ | |||
行 272: | 行 310: | ||
もちろん対応していない Compiler を使うと Engine のビルドではエラーが出ます。 | もちろん対応していない Compiler を使うと Engine のビルドではエラーが出ます。 | ||
特定の Module で clang が必要になった場合に、build.cs 内部で指定するのが本来の使い方だと思われます。 | 特定の Module で clang が必要になった場合に、build.cs 内部で指定するのが本来の使い方だと思われます。 | ||
+ | |||
+ | |||
+ | ==== Windows SDK の選択 ==== | ||
+ | |||
+ | <code xml> | ||
+ | <?xml version=' | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== 有効な分散ビルドの指定 ==== | ||
+ | |||
+ | <code xml> | ||
+ | <?xml version=' | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | | bAllowXGE | ||
+ | | bAllowSNDBS | ||
+ | | bAllowFASTBuild | ||
+ | |||
行 278: | 行 350: | ||
====== UnrealHeaderTool Build の回避方法 ====== | ====== UnrealHeaderTool Build の回避方法 ====== | ||
- | + | Source Code 版 Engine を使用していると、UnrealBuildTool は本来不要なはずの UnrealHeaderTool を何度もビルドしてしまう場合があります。 | |
- | UnrealBuildTool は本来不要なはずの UnrealHeaderTool を何度もビルドしてしまう問題があります。 | + | |
* Makefile.bin が存在しない | * Makefile.bin が存在しない | ||
行 290: | 行 361: | ||
UHT は < | UHT は < | ||
- | もちろん | + | Windows 向けにビルドを行う場合は VisualStudio が必要なのですが、他の Platform |
- | Android SDK (Android NDK) 自体に toolchain 一式が含まれているからです。 | + | 例えば Android の場合、Android SDK (Android NDK) 自体に toolchain 一式が含まれているので単独でビルドを行うことができます。 |
+ | 実際に Binary 配布版 UE4 (おそらく InstalledBuild 版も同じ) | ||
- | + | Source Code 版 UE4 でも、UBT 実行時のコマンドラインオプション -NoBuildUHT または下記の設定によって | |
- | UBT 実行時のコマンドラインオプション -NoBuildUHT または下記の設定で、強制的に UHT のリビルドを回避することができます。 | + | |
<code cpp> | <code cpp> | ||
行 307: | 行 378: | ||
+ | 例えばチームで開発作業を行っていると、プログラマのみ VisualStudio を所有しておりプランナーやグラフィックデザイナーは VisualStudio を持っていない場合があります。 | ||
+ | 生成した Windows 向けの *.exe はもちろん共有が必要ですが、上記の方法を使えば各種実機(Android, | ||
- | 例えばチームで開発作業を行っていて、プログラマのみ VisualStudio を所有しておりプランナーやグラフィックデザイナーは VisualStudio を持っていない場合があります。 | + | 使用方法の例 |
- | 生成した Windows 向けの *.exe はもちろん共有が必要ですが、上記の方法を使えば各種実機(Android, | + | |
- | 方法 | + | |
- | + | ||
- | | + | |
* UnrealBuildTool.exe | * UnrealBuildTool.exe | ||
- | - UE4Editor 上で ProjectLauncher を使います。 | + | - ビルドします。 |
+ | |||
+ | * UE4Editor 上から実機で起動する場合 | ||
+ | - プレイボタンのサブメニューから、リストに並んでいる Android Device を選びます。 | ||
+ | * エラーが出る場合は次の | ||
+ | |||
+ | * UE4Editor 上で ProjectLauncher を使う場合 | ||
- カスタム起動プロファイルに [+] ボタンで新規追加 | - カスタム起動プロファイルに [+] ボタンで新規追加 | ||
- 「ビルド」の項目を " | - 「ビルド」の項目を " | ||
行 321: | 行 397: | ||
- クックしたプラットフォームを " | - クックしたプラットフォームを " | ||
- 「パッケージ」を " | - 「パッケージ」を " | ||
+ | * パッケージ化が不要なら " | ||
- 「デプロイ」を " | - 「デプロイ」を " | ||
+ | * パッケージ化ではなく起動したい場合は " | ||
- 右上の矢印で戻る | - 右上の矢印で戻る | ||
- | | + | |
ue4/buildsystem.txt · 最終更新: 2022/03/17 21:58 by oga