概要
モジュールは UE4 のビルド ブロックです。エンジンは、モジュールの大きなコレクションとして実装され、ゲームは独自のモジュールでそれらを拡張します。各モジュールには機能一式がカプセル化されており、パブリック インターフェースの提供および他のモジュールが使用する環境 (マクロの使用、パスのインクルードなど) のコンパイルが可能です。
モジュールは .build.cs 拡張子のついた C# ソース ファイルで宣言され、プロジェクトの Source ディレクトリに格納されます。モジュールに属するこの C++ ソース コードは .build.cs ファイルの隣、もしくはそのサブディレクトリに格納されます。各.build.cs ファイルは ModuleRules 基本クラスから派生したクラスを宣言し、コンストラクタからのビルド方法を調節するプロパティを設定します。これらの .build.cs ファイルは UnrealBuildTool でコンパイルされ、コンパイル環境全体を判断するために構築されます。
以下が、代表的な .build.cs ファイルの構造体です。
using UnrealBuildTool;
using System.Collections.Generic;
public class MyModule :ModuleRules
{
public MyModule(ReadOnlyTargetRules Target) : base(Target)
{
// Settings go here
}
}
読み取り / 書き込み用プロパティ
- Type (ModuleType)
モジュール タイプです。
- BinariesSubFolder (String)
DLL ビルド時のこのモジュールの格納先 Binaries/PLATFORM フォルダのサブフォルダです。TargetPlatform や ShaderFormat モジュールなど、検索可能なモジュールのみに使用します。これらの検索に FindModules を使用しない場合、モジュールは見つかりません。
- OptimizeCode (CodeOptimization)
モジュールのコードをいつ最適化するか指定します。
- PrivatePCHHeaderFile (String)
このモジュールに対する明示的なプライベート PCH です。このモジュールは共有 PCH を使用しないことを暗示します。
- SharedPCHHeaderFile (String)
このモジュールで提供される共有 PCH のヘッダ ファイル名です。Public C++ ヘッダ ファイルへの有効な相対パスでなければなりません。他の C++ モジュールに多数インクルードされているヘッダ ファイルに対してのみ設定します。
- ShortName (String)
このモジュールの中間ファイル用の中間ディレクトリとファイルの別の名前を指定します。パスの長さ制限がある場合に便利です。
- PCHUsage (PCHUsageMode)
このモジュールにプリコンパイル済みヘッダを使用します。
- bUseRTTI (Boolean)
ランタイム型情報を使います。
- bUseAVX (Boolean)
AVX 命令を使います。
- bEnableBufferSecurityChecks (Boolean)
バッファ セキュリティ チェックを有効にします。深刻なセキュリティ リスクを防ぐので、常に有効にします。
- bEnableExceptions (Boolean)
例外処理を有効にします。
- bEnableExceptions (Boolean)
objective C 例外処理を有効にします。
- bEnableShadowVariableWarnings (Boolean)
シャドウ変数への警告を有効にします。
- bEnableUndefinedIdentifierWarnings (Boolean)
#if 表現式で定義されていない識別子を使用した場合に出す警告を有効にします。
- bFasterWithoutUnity (Boolean)
True でユニティ ビルドが有効にされている場合、このモジュールはユニティなしでビルドします。
- MinSourceFilesForUnityBuildOverride (Int32)
そのモジュールに対してユニティ ビルドを有効にする前にこのゲーム モジュールにあるソース ファイル数です。-1 以外に設定すると、MinGameModuleSourceFilesForUnityBuild に制御されるデフォルト設定値をオーバーライドします。
- MinFilesUsingPrecompiledHeaderOverride (Int32)
ゼロ以外の場合、BuildConfiguration.MinFilesUsingPrecompiledHeader をオーバーライドします。
- bBuildLocallyWithSNDBS (Boolean)
モジュールは #import を使うので、SN-DBS を使ったコンパイルはローカルにビルドされます。
- IsRedistributableOverride (Nullable<Boolean>)
このモジュールにオーバーライド フラグを再配布します。
- bOutputPubliclyDistributable (Boolean)
モジュール上のコード / 依存関係 (CarefullyRedist、NotForLicensees、NoRedist など) がパブリックでない場合でも、このモジュールからの出力を公開配布できるかどうかを指定します。ソースではなくバイナリ リリースを予定している時に使用します。
- WhitelistRestrictedFolders (List<String>)
このバイナリのコンパイル時に制限のあるフォルダ名を伝播せずに参照できるフォルダのリストです。
- bEnforceIWYU (Boolean)
PCHUsage を ExplicitOrSharedPCH に設定すると、「include what you use」ルールを使用します。モノリシック (Engine.h、UnrealEd.h など) を使用すると警告が出て、ソースファイルに一致するヘッダが最初に含まれているかどうかをチェックします。
- bAddDefaultIncludePaths (Boolean)
モジュールのデフォルトの include パスをすべて追加するかどうかです ( Source/Public の Source/Classes フォルダ、サブフォルダなど)。
- PublicIncludePathModuleNames (List<String>)
モジュールのパブリック ヘッダが、インポートやリンクではなく、アクセスする必要があるヘッダ ファイルをもつモジュール名リスト (パスは必要ありません) です。
- PublicDependencyModuleNames (List<String>)
パブリック依存モジュール名のリスト (パスは必要ありません) (自動的にプライベート / パブリック インクルードを行います) です。パブリック ソース ファイルが必要とするモジュールです。
- PrivateIncludePathModuleNames (List<String>)
モジュールのパブリック コード ファイルが、インポートやリンクではなく、アクセスする必要があるヘッダ ファイルのあるモジュール名リスト (パスは必要ありません) です。
- PrivateDependencyModuleNames (List<String>)
プライベート依存モジュール名リストです。プライベート コードは依存するモジュールです。パブリック インクルードファイルが依存するものは何もありません。
- CircularlyReferencedDependentModules (List<String>)
レガシーなので、新規コードでは使用しません。循環参照として処理すべきモジュール依存性のリストです。このモジュールには、パブリックあるいはプライベート依存リストが既に追加されているはずです。
- PublicSystemIncludePaths (List<String>)
システム / ライブラリ インクルード パスのリストです。通常は、外部 (サード パーティ) モジュールに使用されます。ヘッダの依存性を解決する時にチェックされない安定したパブリック ヘッダ ファイルです。
- PublicIncludePaths (List<String>)
(「Public」フォルダからすべてのファイルを検索できるので、この設定は現在必要ありません) 他のモジュールに公開されているインクルード ファイルへのすべてのパスのリストです。
- PrivateIncludePaths (List<String>)
他のモジュールへ公開されていない、このモジュール内部のインクルード ファイルへのすべてのパスのリストです (最低 1 つは 'Private' パスをインクルードしていること。相対パスを避けたい場合は 1 つ以上)。
- PublicLibraryPaths (List<String>)
システム / ライブラリ パス (.lib ファイルのディレクトリ) のリストです。通常は、外部 (サード パーティ) モジュールに使用されます。
- PublicAdditionalLibraries (List<String>)
追加ライブラリ (.lib を拡張子にもつファイル名) です。通常は、外部 (サード パーティ) モジュールに使用されます。
- PublicFrameworks (List<String>)
XCode フレームワーク (iOS および MacOS) のリスト
- PublicWeakFrameworks (List<String>)
弱いフレームワーク (OS 版トランジション) のリスト
- PublicAdditionalFrameworks (List<UEBuildFramework>)
追加フレームワークのリストです。通常は、Mac と iOS に使用されます。
- AdditionalBundleResources (List<UEBuildBundleResource>)
Mac や iOS 用 バンドルへコピーすべき追加リソースのリストです。
- PublicAdditionalShadowFiles (List<String>)
リモート マシン (iOS など) 上で実行するビルド用に、このリストには app が正常にリンクできるようにコピーされる必要のある追加ファイルが含まれています。ソース / ヘッダ ファイルと PCH は自動的にコピーされます。通常、これは単にプリコンパイルされたサードパーティ ライブラリ依存性リストです。
- PublicDelayLoadDLLs (List<String>)
遅延ロード DLL のリストです。通常は、外部 (サード パーティ) モジュールに使用されます。
- PrivateDefinitions (List<String>)
Private compiler definitions for this module
- PublicDefinitions (List<String>)
Public compiler definitions for this module
- DynamicallyLoadedModuleNames (List<String>)
ランタイム時にこのモジュールが必要とする場合のある追加モジュールです。
- PlatformSpecificDynamicallyLoadedModuleNames (List<String>)
ランタイム時にこのモジュールがもう 1 つのプラットフォーム (シェーダー フォマットなど) の代わりに必要とする場合のある追加モジュールです。
- RuntimeDependencies (RuntimeDependencyList)
ランタイム時にこのモジュールが依存するファイル リストです。これらのファイルはターゲットと共にステージングされます。
- AdditionalPropertiesForReceipt (List<ReceiptProperty>)
Build receipt に追加される追加プロパティ リストです。
- PrecompileForTargets (PrecompileTargetsType)
このモジュールをプリコンパイルするターゲットです。
- ExternalDependencies (List<String>)
修正されると maikefile を無効にする外部ファイルです。相対パスは .build.cs ファイルに対して相対的に解決されます。