モジュール は 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)
{
// プロパティと設定はこちらから始まります
}
}
Title: ビルド コンフィギュレーション プロパティ ページ Crumbs: Description: これはプロシージャルに生成されたマークダウン ページです。 Version: 5.4
読み取り専用プロパティ
-
IsPlugin (Boolean): このモジュールがプラグインに含まれていれば true
-
Logger (ILogger): ターゲット ロガーのアクセサ
-
HasPackageOverride (Boolean): このモジュールでオーバーライド タイプが指定されていれば、true が返されます
-
AutoSdkDirectory (String): アクティブなホスト プラットフォーム用の「AutoSDK」ディレクトリ
-
EngineDirectory (String): 現在のエンジンのディレクトリ
-
PluginDirectory (String): このプラグインが置かれているディレクトリのプロパティ。サードパーティの依存関係のパスを追加する場合に有用です。
-
ModuleDirectory (String): このモジュールが置かれているディレクトリのプロパティ。サードパーティの依存関係のパスを追加する場合に有用です。
-
TestsDirectory (String): モジュールの低レベル テスト ディレクトリ「Tests」が返されます。
-
IsVcPackageSupported (Boolean): ビルド コンフィギュレーションで VcPkg がサポートされているかどうかが返されます。
読み取り/書き込みプロパティ
-
StaticAnalyzerRulesets (HashSet
): 警告をフィルタするために使用する静的アナライザーのルールセット。これは MSVC でのみサポートされています。詳細は、https://learn.microsoft.com/en-us/cpp/code-quality/using-rule-sets-to-specify-the-cpp-rules-to-run を参照してください。 -
StaticAnalyzerCheckers (HashSet
): 静的アナライザーのデフォルト チェッカーの代わりに有効にするチェッカー。これは Clang でのみサポートされています。完全なリストについては、https://clang.llvm.org/docs/analyzer/checkers.html を参照してください。または、「clang -Xclang -analyzer-checker-help」または「clang -Xclang -analyzer-checker-help-alpha」を実行して、実験的なチェッカーのリストを取得することができます。 -
StaticAnalyzerDisabledCheckers (HashSet
): 無効にする、静的アナライザーのデフォルト チェッカー。StaticAnalyzerCheckers が指定されている場合は使用されません。これは Clang でのみサポートされています。これは、無効になっているデフォルト チェッカーである deadcode.DeadStores および security.FloatLoopCounter をオーバーライドします。完全なリストについては、https://clang.llvm.org/docs/analyzer/checkers.html を参照してください。または、「clang -Xclang -analyzer-checker-help」または「clang -Xclang -analyzer-checker-help-alpha」を実行して、実験的なチェッカーのリストを取得することができます。 -
StaticAnalyzerAdditionalCheckers (HashSet
): 有効にする、静的アナライザーのデフォルトではないチェッカー。StaticAnalyzerCheckers が指定されている場合は使用されません。これは Clang でのみサポートされています。完全なリストについては、https://clang.llvm.org/docs/analyzer/checkers.html を参照してください。または、「clang -Xclang -analyzer-checker-help」または「clang -Xclang -analyzer-checker-help-alpha」を実行して、実験的なチェッカーのリストを取得することができます。 -
AllowedRestrictedFolders (List
): 制限されているフォルダ名を伝播することなく、このバイナリのコンパイル時に参照することが許可されているフォルダのリスト。 -
AliasRestrictedFolders (Dictionary
): エイリアスされた制限付きフォルダ リファレンスです。 -
PublicIncludePathModuleNames (List
): モジュールのパブリック ヘッダでアクセスする必要があるものの、「import」やリンクは必要ない、ヘッダ ファイルを使用しているモジュール名 (パスは不要) のリスト。 -
PublicDependencyModuleNames (List
): パブリックな依存関係のモジュール名リスト (パスは不要) (private/public は自動的にインクルードされます)。これらは、パブリック ソース ファイルで必要なモジュールです。 -
PrivateIncludePathModuleNames (List
): モジュールのプライベート コード ファイルでアクセスする必要はあるものの、「import」やリンクは必要ない、ヘッダ ファイルを使用しているモジュール名 (パスは不要) のリスト。 -
PrivateDependencyModuleNames (List
): プライベートな依存関係のモジュール名リスト。プライベート コードはこれらのモジュールに依存していますが、パブリック インクルード ファイルは依存していません。 -
CircularlyReferencedDependentModules (List
): 今は使われていないため、新しいコードでは使用しないでください。循環参照として処理されるモジュール依存関係のリスト。このモジュールは、パブリックまたはプライベートの依存関係モジュール リストにすでに追加されている必要があります。 -
PublicSystemIncludePaths (List
): システム / ライブラリのインクルード パスのリスト。通常は外部 (サードパーティ) モジュールに使用されます。これらは、ヘッダの依存関係を解決するときにチェックされない、不変のパブリック ヘッダ ファイル ディレクトリです。 -
PublicIncludePaths (List
): (「Public」フォルダからすべてのファイルが検索されるため、この設定は現在必要ありません) 他のモジュールに公開されているファイルがインクルードされたすべてのパスのリストです -
InternalIncludePaths (List
): (「Internal」フォルダからすべてのファイルが検索されるため、この設定は現在必要ありません) 他の内部モジュールに公開されているすべてのインクルード ファイルのパスのリストです。 -
PrivateIncludePaths (List
): このモジュールの内部インクルード ファイルへのすべてのパスのリストです。他のモジュールには公開されていません (「Private」パスへインクルードが少なくとも 1 つ、相対パスを避けたい場合はそれ以上) -
PublicSystemLibraryPaths (List
): システム ライブラリ パス (.lib ファイルのディレクトリ) のリストです。通常は外部 (サードパーティ) モジュールに使用されます。代わりに PublicAdditionalLibaries を使用してください。 -
PrivateRuntimeLibraryPaths (List
): 実行時のライブラリの検索パスのリストです (.so ファイルなど) -
PublicRuntimeLibraryPaths (List
): 実行時のライブラリの検索パスのリストです (.so ファイルなど) -
PublicAdditionalLibraries (List
): 追加ライブラリのリスト (.lib ファイルの拡張子付きの名前)。通常は外部 (サードパーティ) モジュールに使用されます -
DependenciesToSkipPerArchitecture (Dictionary
>): 無視するためのリンクに依存するアーキテクチャごとの依存関係のリスト (複数のアーキテクチャ用にビルドする場合に便利で、1 つのアーキテクチャにのみ lib が必要です)。ツールチェーンに応じてこれを使用します。 -
PublicPreBuildLibraries (List
): 追加のプレビルド ライブラリのリストです (拡張子を含む .lib ファイルの名前) - 通常はビルド中の追加ターゲットに使用されますが、TargetRules.PreBuildSteps または TargetRules.PreBuildTargets のいずれかを使います。 -
PublicSystemLibraries (List
): 使用するシステム ライブラリのリスト。これらは通常、名前で参照された後に、システム パスで見つかります。.lib ファイルを参照する場合は、代わりに PublicAdditionalLibraries を使用してください。 -
PublicFrameworks (List
): XCode フレームワークのリストです (iOS と MacOS) -
PublicWeakFrameworks (List
): 弱いフレームワークのリストです (OS のバージョン移行用) -
PublicAdditionalFrameworks (List
): 追加フレームワークのリストです。通常は、Mac と iOS の外部 (サードパーティ) モジュールに使用されます -
AdditionalBundleResources (List
): Mac または iOS 用 のアプリ バンドルにコピーすべき追加リソースのリストです。 -
TypeLibraries (List
): ヘッダの生成に必要なライブラリ タイプのリストです (Windows のみ)。 -
PublicDelayLoadDLLs (List
): 遅延ロード DLL のリストです。通常は外部 (サードパーティ) モジュールに使用されます -
PrivateDefinitions (List
): このモジュールのプライベート コンパイラの定義です -
PublicDefinitions (List
): このモジュールのパブリック コンパイラの定義です -
DynamicallyLoadedModuleNames (List
): このモジュールが実行時に必要とする追加モジュールです -
RuntimeDependencies (RuntimeDependencyList): このモジュールがランタイム時に依存するファイルのリスト。これらのファイルは、ターゲットとともにステージングされます。
-
AdditionalPropertiesForReceipt (ReceiptPropertyList): ビルド レシートに追加される追加プロパティのリストです
-
ExternalDependencies (List
): 変更されている場合は makefile が無効になる外部ファイル。相対パスは、.build.cs ファイルを基準にして保存されます。 -
SubclassRules (List
): 変更されている場合は makefile が無効になるサブクラス ルール ファイル。 -
GenerateHeaderFuncs (List
>>): ヘッダ ファイルを生成するために呼び出されるサブディレクトリの名前と関数のリスト。生成されたコード ディレクトリにサブディレクトリ名が追加され、ヘッダが内部に生成される新しいディレクトリが形成されます。 -
Name (String): このモジュールの名前
-
Type (ModuleType): モジュールのタイプです
-
OverridePackageType (PackageOverrideType): 別のパッケージ フラグを設定するモジュールのオーバーライドされたタイプ。プラグインの一部であるモジュールでは、すでに
.upluginファイルで設定されているため、使用できません。 -
BinariesSubFolder (String): DLL のビルド時にこのモジュールを配置するための「Binaries/PLATFORM」フォルダのサブフォルダです。これは、TargetPlatform モジュールや ShaderFormat モジュールなど、検索で見つかったモジュールでのみ使用できます。FindModules を使用してモジュールを追跡しないと、これらのモジュールは見つかりません。
-
OptimizeCode (CodeOptimization): このモジュールのコードを最適化する必要がある場合に指定します。
-
OptimizationLevel (OptimizationMode): 速度、コード サイズ、またはその両方の最適化レベルを微調整できます。これにはプライベート PCH (または、非推奨の NoPCH) が必要です。
-
FPSemantics (FPSemanticsMode): このモジュールの FP セマンティクスの上書きを許可します。これにはプライベート PCH (または、非推奨の NoPCH) が必要です。
-
PrivatePCHHeaderFile (String): このモジュールの明示的なプライベート PCH。これが指定されていると、このモジュールが共有 PCH を使用しないことを意味します。
-
SharedPCHHeaderFile (String): このモジュールによって提供される共有 PCH のヘッダ ファイル名。パブリック C++ ヘッダ ファイルの有効な相対パスである必要があります。これは、他の多数の C++ モジュールでインクルードされるヘッダ ファイルに対してのみ設定します。
-
ShortName (String): このモジュールの中間ディレクトリおよび中間ファイルの代替名を指定します。パスの長さの制限に達している場合に便利です。
-
PCHUsage (PCHUsageMode): このモジュールでのプリコンパイル済みヘッダの使用を指定します。
-
bTreatAsEngineModule (Boolean): このモジュールをエンジン モジュールとして扱う必要があるかどうか (たとえば、エンジン定義、PCH を使用し、DebugGame 構成で最適化を有効にしてコンパイルするなど)。作成元のルール アセンブリに基づいてデフォルトに初期化されます。
-
bValidateFormatStrings (Boolean): 不正な UE_LOG フォーマット文字列に対してコンパイル エラーを出力します。
-
bValidateInternalApi (Boolean): 非エンジン モジュールに対する内部 API 使用に対して非推奨の警告またはエラーを出力します。
-
DefaultBuildSettings (BuildSettingsVersion): どのエンジン バージョンのビルド設定をデフォルトで使用するかを指定します。
-
IncludeOrderVersion (EngineIncludeOrderVersion): このモジュールのコンパイル時にどのバージョンのインクルード順序を使用するかを指定します。コマンドラインまたはモジュールのルールで -ForceIncludeOrder を使用してオーバーライドできます。
-
bUseRTTI (Boolean): ランタイムタイム情報を使用します
-
bVcRemoveUnreferencedComdat (Boolean): 参照されていない COMDAT 関数とデータを削除するように MSVC に指示するかどうかを指定します。
-
bCodeCoverage (Boolean): コード カバレッジ コンパイル/リンクのサポートを有効にします。
-
bUseAVX (Boolean): 廃止予定:SSE または AVX 組み込み関数が使用されているかどうかに関係なく、AVX 命令がサポートされているプラットフォームでは AVX 命令を生成するようにコンパイラに指示します。なお、これを有効にすると、PC プラットフォームの最小要件が変わり、生成される実行ファイルは、AVX がサポートされていないマシンではクラッシュします。
-
MinCpuArchX64 (Nullable
): SSE または AVX 組み込み関数が使用されているかどうかに関係なく、AVX 命令がサポートされている x64 プラットフォームでは AVX 命令を生成するようにコンパイラに指示します。なお、これを有効にすると、PC プラットフォームの最小要件が変わり、生成される実行ファイルは、AVX がサポートされていないマシンではクラッシュします。 -
bEnableBufferSecurityChecks (Boolean): バッファ セキュリティ チェックを有効にします。重大なセキュリティ リスクが回避されるため、通常は有効にします。
-
bEnableExceptions (Boolean): 例外処理を有効にします
-
bEnableObjCExceptions (Boolean): Objective C の例外処理を有効にします
-
bEnableObjCAutomaticReferenceCounting (Boolean): Objective C の自動参照カウント (ARC) を有効にします。これを true に設定する場合、このモジュールに共有 PCH を使用できません。エンジンでは短期的に ARC を広範囲に使用しなくなります。共有 PCH はコンシューマーとは異なるフラグでコンパイルされているため、これを行わないとコンパイル エラーが生じます
-
DeterministicWarningLevel (WarningLevel): 決定論的警告をどのように処理するかを指定します (実験的機能)。
-
ShadowVariableWarningLevel (WarningLevel): シャドウ変数に対する警告をどのように処理するかを指定します。
-
bWarningsAsErrors (Boolean): すべての警告をエラーとして有効にするかどうかを指定します。UE ではすでにほとんどの警告をエラーとして有効にしていますが、非推奨であることの警告など、いくつかのものは有効になっていません。
-
UnsafeTypeCastWarningLevel (WarningLevel): 安全でない暗黙の型キャストに対する警告をどのように処理するかを指定します (double->float または int64->int32 など)。
-
bEnableUndefinedIdentifierWarnings (Boolean): #if 式で未定義の識別子を使用する場合の警告を有効にします。
-
ModuleIncludePathWarningLevel (WarningLevel): 一般的なモジュールのインクルード パス検証メッセージをどのように処理するかを指定します。
-
ModuleIncludePrivateWarningLevel (WarningLevel): プライベート モジュールのインクルード パス検証メッセージをどのように処理するかを指定します。モジュールは、プライベート ヘッダを公開するインクルード パスを追加します。
-
ModuleIncludeSubdirectoryWarningLevel (WarningLevel): 不要なモジュールのサブディレクトリ インクルード パス検証メッセージをどのように処理するかを指定します。
-
bDisableStaticAnalysis (Boolean): すべての静的解析 (Clang、MSVC、PVS-Studio) を無効にします。
-
bStaticAnalyzerExtensions (Boolean): EspXEngine プラグインを使用して追加のアナライザー拡張機能の警告を有効にします。これは MSVC でのみサポートされています。詳細は、https://learn.microsoft.com/en-us/cpp/code-quality/using-the-cpp-core-guidelines-checkers を参照してください。これにより、デフォルトで大量の警告が追加されます。これを有効にする場合は、StaticAnalyzerRulesets を使用することをお勧めします。
-
bUseUnity (Boolean): unity ビルドが有効になっている場合に、これを使用すると、この特定のモジュールが Unity を使用してビルドされるかどうかをオーバーライドできます。これは、BuildConfiguration のモジュールごとのコンフィギュレーションを使用して設定されます。
-
bMergeUnityFiles (Boolean): コンパイルを高速化するために、モジュールおよび生成された unity ファイルをマージするかどうかを指定します。
-
MinSourceFilesForUnityBuildOverride (Int32): モジュールに対して unity ビルドをアクティブ化する前の、このモジュール内のソース ファイルの数。「-1」以外に設定すると、MinGameModuleSourceFilesForUnityBuild が制御するデフォルト設定が無効になります
-
MinFilesUsingPrecompiledHeaderOverride (Int32): 「0」以外の場合、BuildConfiguration.MinFilesUsingPrecompiledHeader をオーバーライドします。
-
NumIncludedBytesPerUnityCPPOverride (Int32): 「0」以外の場合、
Target.NumIncludedBytesPerUnityCPPをオーバーライドします。 -
bBuildLocallyWithSNDBS (Boolean): モジュールで #import が使用されるため、SN-DBS を使用してコンパイルする場合は、ローカルでビルドする必要があります
-
bEnableNonInlinedGenCppWarnings (Boolean): 一致する手書きの cpp ファイルにインライン化できる .gen.cpp ファイルがある場合の警告を有効にします
-
IsRedistributableOverride (Nullable
): このモジュールの再配布オーバーライド フラグ。 -
bLegalToDistributeObjectCode (Boolean): 公開可能ではない (CarefullyRedist、NotForLicensees、NoRedist など) モジュールのコードや依存関係がこのモジュールに含まれていても、このモジュールからの出力を公開できるかどうかを指定します。これは、ソース コードではなくバイナリ ファイルのリリースを計画している場合に使用します。
-
bEnforceIWYU (Boolean): PCHUsage を ExplicitOrSharedPCH に設定すると、「include what you use」ルールが実行され、単一のブロック ヘッダ (「Engine.h」、「UnrealEd.h」など) が使用されると、警告が表示されます。また最初にソース ファイルに一致するヘッダがインクルードされているかどうかを確認します。
-
IWYUSupport (IWYUSupport): 実行時にソース コードを修正できる「include what you use」を許可します。この変数が機能するには、bEnforceIWYU を true にする必要があります。
-
bAddDefaultIncludePaths (Boolean): モジュールにデフォルトのインクルード パスをすべて追加するかどうかを指定します (例:「Source/Classes」フォルダ、「Source/Public」の下のサブフォルダ)。
-
bIgnoreUnresolvedSymbols (Boolean): モジュールのダングリング (解決していない外部など) 記号を無視するかどうかを指定します。
-
bPrecompile (Boolean): このモジュールをプリコンパイルするかどうかを指定します。デフォルトは、ターゲットの bPrecompile フラグです。モジュールがプリコンパイルされないようにするには、このフラグをクリアします。
-
bUsePrecompiled (Boolean): このモジュールでプリコンパイルされたデータを使用するかどうかを指定します。インストールされているアセンブリから作成されたモジュールでは、常に true です。
-
bAllowConfidentialPlatformDefines (Boolean): このモジュールが「PLATFORM_XXXX」(XXXX は機密プラットフォーム名) スタイルの定義を使用できるかどうかを指定します。これは、エンジンまたは他の共有コードで、#if PLATFORM_XXXX ブロック内の機密情報が漏れないようにするために使用されます。ただし、ライセンシーのゲーム コードではこれを許可する場合があります。
-
bAllowAutoRTFMInstrumentation (Boolean): AutoRTFMCompiler が有効な場合にのみ、このモジュールへの AutoRTFM インストルメンテーションを有効にします
-
PrecompileForTargets (PrecompileTargetsType): このモジュールをプリコンパイルする必要のあるターゲットです。
-
bRequiresImplementModule (Nullable
): このモジュールが IMPLEMENT_MODULE マクロの実装を必要とするかどうかを指定します。ほとんどの UE モジュールでは、IMPLEMENT_MODULE マクロを使用して他のグローバルなオーバーロードを行っているため (GMalloc にフォワードする new/delete 演算子など)、これを有効にする必要があります。 -
bLegacyPublicIncludePaths (Boolean): このモジュールが、インクルードされている他のモジュールのヘッダを、その「'Public'」フォルダのルートを基準とした相対パスとして修飾するかどうかを指定します。これにより、コンパイラに渡す必要がある検索パスの数が減るため、パフォーマンスが向上し、コンパイラのコマンドラインが短くなります。
-
bLegacyParentIncludePaths (Boolean): このモジュールが、インクルードされている他のモジュールのヘッダを、その親ディレクトリを基準とした相対パスとして修飾するかどうかを指定します。これにより、コンパイラに渡す必要がある検索パスの数が減るため、パフォーマンスが向上し、コンパイラのコマンドラインが短くなります。
-
bValidateCircularDependencies (Boolean): 循環依存関係を許可リストに基づいて検証するかどうかを指定します。循環モジュール依存関係があると、ビルドに時間がかかります。このオプションを無効にしないことを強くお勧めします。このオプションは、常に許可リストに基づいて検証されるエンジン モジュールでは無視されます。
-
CppStandard (Nullable
): このモジュールのコンパイルにどの規格を使用するかを指定します。 -
CStandard (Nullable
): このモジュールのコンパイルにどの規格を使用するかを指定します。 -
ModuleSymbolVisibility (SymbolVisibility): 記号の可視性を制御します