ue4:buildsystem
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
ue4:buildsystem [2020/08/23 01:58] – [UnrealHeaderTool Build の回避方法] oga | ue4:buildsystem [2022/03/17 21:58] (現在) – [Unity Build] 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 を有効にすると複数のソースコードを単一のファイルにまとめてコンパイルを行います。ビルド時間を大幅に短縮することができます。 | ||
行 125: | 行 126: | ||
他のファイルで #include されているかもしれないからです。 | 他のファイルで #include されているかもしれないからです。 | ||
Unity Build が行われる単位は変化するので、以前はビルドが通っていても再ビルドしたらエラーが出ていて戸惑うこともあります。 | Unity Build が行われる単位は変化するので、以前はビルドが通っていても再ビルドしたらエラーが出ていて戸惑うこともあります。 | ||
+ | |||
+ | Unity Build を無効化してビルドが通るかテストしたい場合は、ビルド時のコマンドラインオプションに -DisableUnity を指定します。 | ||
+ | (VisualStudio から呼ばれている Build.bat のコマンドラインオプションに指定できます。) | ||
+ | |||
+ | または BuildConfiguration.xml でも設定可能です。 | ||
+ | |||
+ | |||
行 133: | 行 141: | ||
+ | === UnityBuild の各種設定 === | ||
+ | |||
+ | UnityBuild はビルド時間を短縮しますが、ビルドするソースコードが肥大しメモリ消費が増えます。 | ||
+ | 特にマルチコア・マルチスレッド CPU で並列ビルドを行う場合はメモリがあふれる可能性があります。 | ||
+ | |||
+ | コマンドラインオプションではなく、BuildConfigration.xml で無効化したい場合は bUseUnityBuild を使います。 | ||
+ | |||
+ | また、Unity 化する場合のソースコードのサイズ制限の目安を NumIncludedBytesPerUnityCPP (byte数) で指定できます。デフォルトは 384KB (393216) です。 | ||
+ | RAM 容量が少なくメモリ不足が発生する場合はサイズを減らしてみてください。 | ||
+ | |||
+ | <code xml> | ||
+ | <?xml version=' | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== ビルド速度の調整 ==== | ||
+ | |||
+ | |||
+ | === 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: | 行 206: | ||
- | 上記のように < | + | 上記のように < |
例えば下記の UFUNCTION() はどちらも < | 例えば下記の UFUNCTION() はどちらも < | ||
行 225: | 行 283: | ||
* USER_DIR = C:/ | * USER_DIR = C:/ | ||
+ | |||
+ | Linux と macOS の場合は次の場所になります。 | ||
+ | |||
+ | - $ENGINE_DIR/ | ||
+ | - $HOME/ | ||
+ | - $HOME/ | ||
+ | |||
+ | **BuildConfiguration.xml に定義可能なパラメータの詳細は $ENGINE_DIR/ | ||
+ | |||
行 274: | 行 341: | ||
もちろん対応していない 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 | ||
+ | |||
ue4/buildsystem.txt · 最終更新: 2022/03/17 21:58 by oga