モジュール は Unreal Engine (UE) の構成要素です。UE は多数のモジュールの集合として実装されており、ゲームではそれらを増強する独自のモジュールが提供されます。各モジュールでは一連の機能がカプセル化されており、他のモジュールで使用できるようにパブリック インターフェースおよびコンパイル環境 (マクロ、インクルード パスなど) が提供されます。
モジュールは、拡張子が .build.cs
である C# ソース ファイルで宣言されており、プロジェクトの「Source
」ディレクトリ内に格納されています。モジュールに属する C++ ソース コードは、同じディレクトリ内またはサブディレクトリ内の .build.cs
ファイルに格納されています。各 .build.cs
ファイルでは、ModuleRules
基本クラスから派生したクラスが宣言されており、そのコンストラクタからどのようにビルドされるかを制御するプロパティが設定されています。これらの .build.cs
ファイルは、Unreal Build Tool (UBT) によってコンパイルされ、全体的なコンパイル環境を決定するように構成されています。
.build.cs
ファイルの一般的な構造は次のとおりです。
using UnrealBuildTool;
using System.Collections.Generic;
public class MyModule : ModuleRules
{
public MyModule(ReadOnlyTargetRules Target) : base(Target)
{
// Properties and settings go here
}
}
読み取り専用プロパティ
- IsPlugin (Boolean)
このモジュールがプラグインに含まれていれば、true が返されます。
- HasPackageOverride (Boolean)
このモジュールでオーバーライド タイプが指定されていれば、true が返されます。
- AutoSdkDirectory (String)
アクティブなホスト プラットフォーム用の「AutoSDK」ディレクトリ。
- EngineDirectory (String)
現在のエンジンのディレクトリ。
- PluginDirectory (String)
このプラグインが置かれているディレクトリのプロパティ。サードパーティの依存関係のパスを追加する場合に有用です。
- ModuleDirectory (String)
このモジュールが置かれているディレクトリのプロパティ。サードパーティの依存関係のパスを追加する場合に有用です。
- TestsDirectory (String)
モジュールの低レベル テスト ディレクトリ「
Tests
」が返されます。- BuildOrderSettings (SourceFilesBuildOrderSettings)
モジュールのソース ファイルに対するコンパイル順序オーバーライド ルール (オプション)。
- IsVcPackageSupported (Boolean)
ビルド コンフィギュレーションで VcPkg がサポートされているかどうかが返されます。
読み取り/書き込みプロパティ
- Type (ModuleType)
モジュールのタイプ。
- BinariesSubFolder (String)
ダイナミックリンク ライブラリ (DLL) のビルド時にこのモジュールが配置される、「
Binaries/PLATFORM
」フォルダのサブフォルダ。この値は、TargetPlatform
やShaderFormat
などのモジュールの検索で見つかるモジュールでのみ使用します。モジュールを見つけ出すときにFindModule
が使用されていない場合、これらのモジュールは見つかりません。- PrivatePCHHeaderFile (String)
このモジュールの明示的なプライベート プリコンパイル済みヘッダ (PCH)。これが指定されていると、このモジュールが共有 PCH を使用しないことを意味します。
- SharedPCHHeaderFile (String)
このモジュールによって提供される共有 PCH のヘッダ ファイル名。パブリック C++ ヘッダ ファイルの有効な相対パスである必要があります。これは、他の多数の C++ モジュールでインクルードされるヘッダ ファイルに対してのみ設定します。
- ShortName (String)
このモジュールの中間ディレクトリおよび中間ファイルの代替名を指定します。パスの長さの制限に達している場合に便利です。
- bTreatAsEngineModule (Boolean)
このモジュールをエンジン モジュールとして扱うかどうかを指定します (例:エンジン定義を使用している、PCH である、DebugGame コンフィギュレーションで最適化を有効にしてコンパイルされている)。作成元のルール アセンブリに基づいてデフォルトに初期化されます。
- bDeterministic (Boolean)
決定的コンパイル用のフラグを設定します (実験的機能であり、完全にはサポートされていません)。決定的リンクは
TargetRules
で制御されています。- bUseRTTI (Boolean)
ランタイム タイプ情報を使用します。
- bUseAVX (Boolean)
SSE または AVX 組み込み関数が使用されているかどうかに関係なく、AVX 命令がサポートされているプラットフォームでは AVX 命令を生成するようにコンパイラに指示します。なお、これを有効にすると、PC プラットフォームの最小要件が変わり、生成される実行可能ファイルは、AVX がサポートされていないマシンではクラッシュします。
- bEnableBufferSecurityChecks (Boolean)
バッファ セキュリティ チェックを有効にします。重大なセキュリティ リスクが回避されるため、通常は有効にします。
- bEnableExceptions (Boolean)
例外処理を有効にします。
- bEnableObjCExceptions (Boolean)
Objective-C の例外処理を有効にします。
- bEnableUndefinedIdentifierWarnings (Boolean)
#if
式で使用されている未定義の識別子に対する警告を有効にします。- StaticAnalyzerCheckers (HashSet
) 静的アナライザーのデフォルト チェッカーの代わりに有効にするチェッカー。これは Clang でのみサポートされています。チェッカーの一覧については、Clang ドキュメントの「Clang Checkers」を参照してください。チェッカーの一覧は
clang -Xclang -analyzer-checker-help
を実行することでも取得でき、clang -Xclang -analyzer-checker-help-alpha
を実行すると、実験段階のチェッカーの一覧を取得できます。- StaticAnalyzerDisabledCheckers (HashSet
) 無効にする、静的アナライザーのデフォルト チェッカー。
StaticAnalyzerCheckers
が指定されている場合は使用されません。これは Clang でのみサポートされています。これは、無効になっているデフォルト チェッカーである、deadcode.DeadStores
およびsecurity.FloatLoopCounter
をオーバーライドします。チェッカーの一覧については、Clang ドキュメントの「Clang Checkers」を参照してください。チェッカーの一覧はclang -Xclang -analyzer-checker-help
を実行することでも取得でき、clang -Xclang -analyzer-checker-help-alpha
を実行すると、実験段階のチェッカーの一覧を取得できます。- StaticAnalyzerAdditionalCheckers (HashSet
) 有効にする、静的アナライザーのデフォルトではないチェッカー。
StaticAnalyzerCheckers
が指定されている場合は使用されません。これは Clang でのみサポートされています。チェッカーの一覧については、Clang ドキュメントの「Clang Checkers」を参照してください。チェッカーの一覧はclang -Xclang -analyzer-checker-help
を実行することでも取得でき、clang -Xclang -analyzer-checker-help-alpha
を実行すると、実験段階のチェッカーの一覧を取得できます。- bMergeUnityFiles (Boolean)
高速コンパイルのために、モジュールおよび生成された unity ファイルをマージするかどうかを指定します。
- MinSourceFilesForUnityBuildOverride (Int32)
モジュールに対して unity ビルドをアクティブ化する前にビルドする、このモジュール内のソース ファイルの数。「-1」以外の値に設定すると、
MinGameModuleSourceFilesForUnityBuild
で制御されているデフォルト設定がオーバーライドされます。- MinFilesUsingPrecompiledHeaderOverride (Int32)
ゼロ以外の値であれば、
BuildConfiguration.MinFilesUsingPrecompiledHeader
がオーバーライドされます。- bBuildLocallyWithSNDBS (Boolean)
モジュールで
#import
が使用されているため、SN-DBS を使用してコンパイルする場合はローカルにビルドする必要があります。- IsRedistributableOverride (Nullable
) このモジュールの再配布オーバーライド フラグ。
- bLegalToDistributeObjectCode (Boolean)
公開可能ではない (CarefullyRedist、NotForLicensees、NoRedist など) モジュールのコードや依存関係がこのモジュールに含まれていても、このモジュールからの出力を公開できるかどうかを指定します。これは、ソース コードではなくバイナリ ファイルのリリースを計画している場合に使用します。
- AllowedRestrictedFolders (List
) 制限されているフォルダ名を伝播することなく、このバイナリのコンパイル時に参照することが許可されているフォルダのリスト。
- AliasRestrictedFolders (Dictionary
) エイリアス化されて制限されているフォルダ参照のセット。
- bEnforceIWYU (Boolean)
PCHUsage
がExplicitOrSharedPCH
に設定されている場合に、「include-what-you-use」(IWYU) ルールが適用され、モノリシック ヘッダ (Engine.h
、UnrealEd.h
など) が使用されている場合に警告が表示され、該当するヘッダがソース ファイルで最初にインクルードされていることがチェックされます。- bAddDefaultIncludePaths (Boolean)
デフォルトのインクルード パスすべて (「
Source/Classes
」フォルダ、「Source/Public
」内のサブフォルダなど) をモジュールに追加するかどうかを指定します。- bIgnoreUnresolvedSymbols (Boolean)
モジュール内のダングリング (未解決の外部参照など) シンボルを無視するかどうかを指定します。
- bPrecompile (Boolean)
このモジュールがプリコンパイルされるかどうかを指定します。デフォルトでは、ターゲットの
bPrecompile
フラグの値が使用されます。モジュールがプリコンパイルされないようにするには、このフラグをクリアします。- bUsePrecompiled (Boolean)
プリコンパイルされたデータをこのモジュールで使用するかどうかを指定します。インストールされているアセンブリから作成されたモジュールでは、常に true です。
- bAllowConfidentialPlatformDefines (Boolean)
このモジュールが
PLATFORM_XXXX
(XXXX
は機密プラットフォーム名) スタイルの定義を使用できるかどうかを指定します。これは、エンジンまたは他の共有コードで、#if PLATFORM_XXXX
ブロック内の機密情報が漏れないようにするために使用されます。ただし、ライセンシーのゲーム コードではそれが考慮される場合があります。- PublicIncludePathModuleNames (List
) モジュールのパブリック ヘッダでアクセスする必要があるが、「import」やリンクは必要ない、ヘッダ ファイルを使用しているモジュール名 (パスは不要) のリスト。
- PublicDependencyModuleNames (List
) パブリック依存関係のモジュール名 (パスは不要) のリスト (private/public は自動的にインクルードされる)。これらは、パブリック ソース ファイルで必要なモジュールです。
- PrivateIncludePathModuleNames (List
) モジュールのプライベート コード ファイルがアクセスする必要があるが、「import」やリンクは必要ない、ヘッダ ファイルを使用しているモジュール名 (パスは不要) のリスト。
- PrivateDependencyModuleNames (List
) プライベート依存関係のモジュール名のリスト。プライベート コードはこれらのモジュールに依存しているが、パブリック インクルード ファイルは依存していません。
- CircularlyReferencedDependentModules (List
) 後方互換性を保つためだけに使用されているため、新しいコードでは使用しないでください。循環参照として処理されるモジュール依存関係のリスト。これらのモジュールは、パブリックまたはプライベートの依存関係モジュール リストにすでに追加されている必要があります。
- PublicSystemIncludePaths (List
) システム/ライブラリのインクルード パスのリスト。通常は外部 (サードパーティ) モジュールに使用されます。これらは、ヘッダの依存関係を解決するときにチェックされない、不変のパブリック ヘッダ ファイル ディレクトリです。
- PublicIncludePaths (List
) 他のモジュールに公開されているすべてのインクルード ファイルのパスのリスト (現在は、「
Public
」フォルダですべてのファイルが見つかるため、この設定は不要です)。- InternalncludePaths (List
) 他の内部モジュールに公開されているすべてのインクルード ファイルのパスのリスト (現在は、「
Internal
」フォルダですべてのファイルが見つかるため、この設定は不要です)。- PrivateIncludePaths (List
) 他のモジュールに公開されていない、このモジュールのすべての内部インクルード ファイルのパスのリスト (最少でも「
Private
」パスへのインクルードが 1 つあり、相対パスを使用しない場合はさらに多くなります)。- PublicSystemLibraryPaths (List
) システム ライブラリのパス (
.lib
ファイルが置かれているディレクトリ) のリスト。外部 (サードパーティ) モジュールでは、代わりに「PublicAdditionalLibaries
」を使用してください。- PrivateRuntimeLibraryPaths (List
) ランタイム時のライブラリ (
.so
ファイルなど) 検索パスのリスト。- PublicRuntimeLibraryPaths (List
) ランタイム時のライブラリ (
.so
ファイルなど) 検索パスのリスト。- PublicAdditionalLibraries (List
) 追加ライブラリ (
.lib
ファイルの拡張子付きの名前) のリスト。通常は外部 (サードパーティ) モジュールに使用されます。- PublicPreBuildLibraries (List
) 追加の事前ビルド済みライブラリのリスト (
.lib
ファイルの拡張子付きの名前)。通常は、引き続きビルドされるがTargetRules.PreBuildSteps
またはTargetRules.PreBuildTargets
を使用している追加のターゲットに使用されます。- PublicSystemLibraries (List
) 使用するシステム ライブラリのリスト。これらは通常、名前で参照された後に、システム パスで見つかります。
.lib
ファイルを参照する必要がある場合は、代わりにPublicAdditionalLibraries
を使用します。- PublicFrameworks (List
) XCode フレームワークのリスト (iOS および MacOS)。
- PublicWeakFrameworks (List
) 弱いフレームワークのリスト (OS バージョンの移行用)。
- PublicAdditionalFrameworks (List
) 追加フレームワークのリスト。通常は、iOS および MacOS 上の外部 (サードパーティ) モジュールに使用されます。
- AdditionalBundleResources (List
) MacOS または iOS 用のアプリ バンドルにコピーする必要がある追加リソースのリスト。
- TypeLibraries (List
) ヘッダを生成するために必要とされるタイプ ライブラリのリスト (Windows のみ)。
- PublicDelayLoadDLLs (List
) 遅延ロード DLL のリスト。通常は外部 (サードパーティ) モジュールに使用されます。
- PrivateDefinitions (List
) このモジュール用のプライベート コンパイラ定義。
- PublicDefinitions (List
) このモジュール用のパブリック コンパイラ定義。
- DynamicallyLoadedModuleNames (List
) このモジュールがランタイム時に必要とする可能性がある追加モジュール。
- RuntimeDependencies (RuntimeDependencyList)
このモジュールがランタイム時に依存するファイルのリスト。これらのファイルは、ターゲットとともにステージングされます。
- AdditionalPropertiesForReceipt (ReceiptPropertyList)
ビルド レシートに追加される追加プロパティのリスト。
- PrecompileForTargets (PrecompileTargetsType)
このモジュールをどのターゲット用にプリコンパイルするかを指定します。
- ExternalDependencies (List
) この外部ファイルが変更されていると、makefile が無効になります。相対パスは、
.Build.cs
ファイルを基準として解決されます。- SubclassRules (List
) このサブクラス ルール ファイルが変更されていると、makefile が無効になります。
- bRequiresImplementModule (Nullable
) IMPLEMENT_MODULE
マクロが実装されることを、このモジュールが必要とするかどうかを指定します。ほとんどの UE モジュールでは、IMPLEMENT_MODULE
マクロを使用して他のグローバル オーバーロード (GMalloc
にフォワードする new/delete 演算子など) を行っているため、これを有効にする必要があります。
- bValidateCircularDependencies (Boolean)
循環依存関係を許可リストに基づいて検証するかどうかを指定します。循環モジュール依存関係があると、ビルドに時間がかかります。このオプションを無効にしないことを強くお勧めします。このオプションは、常に許可リストに基づいて検証されるエンジン モジュールでは無視されます。
- CppStandard (CppStandardVersion)
このモジュールのコンパイルにどの規格を使用するかを指定します。
- CStandard (CStandardVersion)
このモジュールのコンパイルにどの規格を使用するかを指定します。
- ModuleSymbolVisibility (SymbolVisibility)
シンボルの可視性を制御します。
- Name (String)
このモジュールの名前。
- OverridePackageType (PackageOverrideType)
別のパッケージ フラグを設定するモジュールのオーバーライドされたタイプ。プラグインの一部であるモジュールでは、
.uplugin
ファイルですでに設定されているため、使用できません。- OptimizeCode (CodeOptimization)
このモジュールのコードを最適化する必要がある場合に指定します。
- PCHUsage (PCHUsageMode)
このモジュールで使用するプリコンパイル済みヘッダを指定します。
- DefaultBuildSettings (BuildSettingsVersion)
どのエンジン バージョンのビルド設定をデフォルトで使用するかを指定します。
- IncludeOrderVersion (EngineIncludeOrderVersion)
このモジュールのコンパイル時にどのバージョンのインクルード順序を使用するかを指定します。コマンドラインまたはモジュールのルールで
-ForceIncludeOrder
を使用してオーバーライドできます。- ShadowVariableWarningLevel (WarningLevel)
シャドウ変数に対する警告をどのように処理するかを指定します。
- UnsafeTypeCastWarningLevel (WarningLevel)
安全でない暗黙の型キャスト (
double->float
、int64->int32
など) に対する警告をどのように処理するかを指定します。- bUseUnity (Boolean)
unity ビルドが有効になっている場合に、これを使用すると、この特定のモジュールが Unity を使用してビルドされるかどうかをオーバーライドできます。これは、
BuildConfiguration.cs
でのモジュールごとにコンフィギュレーションを使用して設定されます。- bLegacyPublicIncludePaths (Boolean)
このモジュールが、インクルードされている他のモジュールのヘッダを、その「
Public
」フォルダのルートを基準とした相対パスとして修飾するかどうかを指定します。これにより、コンパイラに渡す必要がある検索パスの数が減るため、パフォーマンスが向上し、コンパイラのコマンドラインが短くなります。