モジュールは 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。
$ Logger (ILogger):ターゲット ロガーのアクセサ。
$ HasPackageOverride (Boolean):このモジュールでオーバーライド タイプが指定されていれば、true が返されます。
$ ForceIncludeFiles (List<String>):このモジュールのすべてのソース ファイルで強制的にインクルードされるヘッダ ファイル。
$ SDKVersionRelevantPlatforms (List<UnrealTargetPlatform>):これにプラットフォームが入っていて、プロジェクトでその SDK バージョンがデフォルトからオーバーライドされている場合に、このモジュールは共有エンジン モジュールではなくプロジェクト モジュールとしてコンパイルされます。
$ StaticAnalyzerCheckers (HashSet<String>):静的アナライザーのデフォルト チェッカーの代わりに有効にするチェッカーを指定します。 これは Clang でのみサポートされています。 完全なリストについては、https://clang.llvm.org/docs/analyzer/checkers.html を確認してください。 または、「clang -Xclang -analyzer-checker-help」または「clang -Xclang -analyzer-checker-help-alpha」を実行して、実験的なチェッカーのリストを取得することができます。
$ StaticAnalyzerDisabledCheckers (HashSet<String>):無効にする、静的アナライザーのデフォルト チェッカーを指定します。 StaticAnalyzerCheckers が指定されている場合は使用されません。 これは Clang でのみサポートされています。 完全なリストについては、https://clang.llvm.org/docs/analyzer/checkers.html を確認してください。 または、「clang -Xclang -analyzer-checker-help」または「clang -Xclang -analyzer-checker-help-alpha」を実行して、実験的なチェッカーのリストを取得することができます。
$ StaticAnalyzerAdditionalCheckers (HashSet<String>):有効にする、静的アナライザーのデフォルトではないチェッカーを指定します。 StaticAnalyzerCheckers が指定されている場合は使用されません。 これは Clang でのみサポートされています。 完全なリストについては、https://clang.llvm.org/docs/analyzer/checkers.html を確認してください。 または、「clang -Xclang -analyzer-checker-help」または「clang -Xclang -analyzer-checker-help-alpha」を実行して、実験的なチェッカーのリストを取得することができます。
$ StaticAnalyzerPVSDisabledErrors (HashSet<String>):無効にする PVS Studio の解析エラー。
$ AutoSdkDirectory (String):アクティブなホスト プラットフォーム用の「AutoSDK」ディレクトリ。
$ EngineDirectory (String):現在のエンジンのディレクトリ。
$ PluginDirectory (String):このプラグインが置かれているディレクトリのプロパティ。 サードパーティの依存関係のパスを追加する場合に有用です。
$ ModuleDirectory (String):このモジュールが置かれているディレクトリのプロパティ。 サードパーティの依存関係のパスを追加する場合に有用です。
$ TestsDirectory (String):モジュールの低レベル テスト ディレクトリ「Tests」が返されます。
$ IsVcPackageSupported (Boolean):ビルド コンフィギュレーションで VcPkg がサポートされているかどうかが返されます。
読み取り/書き込みプロパティ
$ StaticAnalyzerRulesets (HashSet<FileReference>):警告をフィルタリングするために使用する静的アナライザーのルールセット。 これは MSVC でのみサポートされています。 詳細は、https://learn.microsoft.com/ja-jp/cpp/code-quality/using-rule-sets-to-specify-the-cpp-rules-to-run を参照してください。
$ AllowedRestrictedFolders (List<String>):制限されているフォルダ名を伝播することなく、このバイナリのコンパイル時に参照することが許容されているフォルダのリスト。
$ AliasRestrictedFolders (Dictionary<String, String>): エイリアス化されて制限されているフォルダ参照のセット。
$ PublicIncludePathModuleNames (List<String>):モジュールのパブリック ヘッダでアクセスする必要があるが import もリンクも必要ないヘッダ ファイルを使用しているモジュール名 (パスは不要) のリスト。
$ PublicDependencyModuleNames (List<String>):パブリック依存関係のモジュール名 (パスは不要) のリスト (private/public は自動的にインクルードされる)。 これらは、パブリック ソース ファイルで必要なモジュールです。
$ PrivateIncludePathModuleNames (List<String>):モジュールのプライベート コード ファイルがアクセスする必要があるが import もリンクも必要ないヘッダ ファイルを使用しているモジュール名 (パスは不要) のリスト。
$ PrivateDependencyModuleNames (List<String>):プライベート依存関係のモジュール名のリスト。 プライベート コードはこれらのモジュールに依存していますが、パブリック インクルード ファイルは依存していません。
$ CircularlyReferencedDependentModules (List<String>):下位互換性を保つためだけに残されているため、新しいコードでは使用しないでください。 循環参照として処理されるモジュール依存関係のリスト。 このモジュールは、パブリックまたはプライベートの依存関係モジュール リストにすでに追加されている必要があります。
$ PublicSystemIncludePaths (List<String>):システム/ライブラリのインクルード パスのリスト。通常は外部 (サードパーティ) モジュールに使用されます。 これらは、ヘッダの依存関係を解決するときにチェックされない、不変のパブリック ヘッダ ファイル ディレクトリです。
$ PublicIncludePaths (List<String>):(「Public」フォルダからすべてのファイルが検索されるため、この設定は現在は必要ありません) 他のモジュールに公開されているすべてのインクルード ファイルのパスのリスト。
$ InternalIncludePaths (List<String>):(「Internal」フォルダからすべてのファイルが検索されるため、この設定は現在必要ありません) 他の内部モジュールに公開されているすべてのインクルード ファイルのパスのリスト。
$ PrivateIncludePaths (List<String>):他のモジュールに公開されていない、このモジュールのすべての内部インクルード ファイルのパスのリスト (「Private」パスのインクルードが少なくとも 1 つあり、相対パスを使用しない場合はさらに多くなります)。
$ PublicSystemLibraryPaths (List<String>):システム ライブラリのパス (「.lib」ファイルが置かれているディレクトリ) のリスト。外部 (サードパーティ) モジュールでは、代わりに PublicAdditionalLibaries を使用してください。
$ PrivateRuntimeLibraryPaths (List<String>):ランタイム時のライブラリ (「.so」ファイルなど) の検索パスのリスト。 .so ファイルなど)
$ PublicRuntimeLibraryPaths (List<String>):ランタイム時のライブラリ (「.so」ファイルなど) の検索パスのリスト。 .so ファイルなど)
$ PublicAdditionalLibraries (List<String>):追加ライブラリ (「.lib」ファイルの拡張子付きの名前) のリスト。通常は外部 (サードパーティ) モジュールに使用されます。
$ PublicDebugVisualizerPaths (List<String>):他のモジュールに公開されている追加のデバッグ ビジュアライザー (.natvis および .natstepfilter) のリスト。通常は外部 (サードパーティ) モジュールに使用されます。
$ DependenciesToSkipPerArchitecture (Dictionary<String, List<UnrealArch>>):無視するリンク用の依存関係の、アーキテクチャごとのリスト (複数のアーキテクチャ用にビルドし、1 つのアーキテクチャにのみ必要な lib がある場合に役立ちます)。これを使用するかどうかはツールチェーンに任されています。
$ PublicPreBuildLibraries (List<String>):追加ライブラリ (「.lib」ファイルの拡張子付きの名前) のリスト。通常は、引き続きビルドされるが TargetRules.PreBuildSteps または TargetRules.PreBuildTargets を使用している追加ターゲットに使用されます。
$ PublicSystemLibraries (List<String>):使用するシステム ライブラリのリスト。これらは通常、名前で参照された後に、システム パスで見つかります。 .lib ファイルを参照する場合は、代わりに PublicAdditionalLibraries を使用してください。
$ PublicFrameworks (List<String>):Xcode フレームワークのリスト (iOS および macOS)。
$ PublicWeakFrameworks (List<String>):弱いフレームワークのリスト (OS バージョンの移行用)。
$ PublicAdditionalFrameworks (List<Framework>):追加フレームワークのリスト。通常は、macOS および iOS での外部 (サードパーティ) モジュールに使用されます。
$ AdditionalBundleResources (List<BundleResource>):macOS または iOS 用のアプリ バンドルにコピーする必要がある追加リソースのリスト。
$ TypeLibraries (List<TypeLibrary>):ヘッダを生成するために必要とされるタイプ ライブラリのリスト (Windows のみ)。
$ PublicDelayLoadDLLs (List<String>):遅延ロード DLL のリスト。通常は外部 (サードパーティ) モジュールに使用されます。
$ PrivateDefinitions (List<String>):このモジュール用のプライベート コンパイラ定義。
$ PublicDefinitions (List<String>):このモジュール用のパブリック コンパイラ定義。
$ DynamicallyLoadedModuleNames (List<String>):このモジュールがランタイム時に必要とする可能性がある追加モジュール。
$ RuntimeDependencies (RuntimeDependencyList):このモジュールがランタイム時に依存するファイルのリスト。 これらのファイルは、ターゲットとともにステージングされます。
$ AdditionalPropertiesForReceipt (ReceiptPropertyList):ビルド レシートに追加される追加プロパティのリスト。
$ ExternalDependencies (List<String>):この外部ファイルが変更されていると、makefile が無効になります。 相対パスは、.build.cs ファイルを基準にして保存されます。
$ SubclassRules (List<String>):このサブクラス ルール ファイルが変更されていると、makefile が無効になります。
$ GenerateHeaderFuncs (List<ValueTuple<String, Action<ILogger, DirectoryReference>>>):サブディレクトリ名と、ヘッダ ファイルを生成するために呼び出される関数のリスト。 生成されたコード ディレクトリにサブディレクトリ名が追加され、ヘッダが内部に生成される新しいディレクトリが形成されます。
$ 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 命令を生成するようにコンパイラに指示します。 なお、これを有効にすると、PC プラットフォームの最小要件が変わり、生成される実行ファイルは、AVX がサポートされていないマシンではクラッシュします。
$ MinCpuArchX64 (Nullable<MinimumCpuArchitectureX64>):SSE または 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 など) に対する警告をどのように処理するかを指定します。
$ UndefinedIdentifierWarningLevel (WarningLevel):条件式内の未定義の識別子をどの警告/エラー レベルとして処理するかを表します。
$ bEnableUndefinedIdentifierWarnings (Boolean):#if 式で未定義の識別子が使用されている場合の警告を有効にするかどうかを指定します。
$ ModuleIncludePathWarningLevel (WarningLevel):モジュールのインクルード パス検証のメッセージ全般をどのように処理するかを指定します。
$ ModuleIncludePrivateWarningLevel (WarningLevel):プライベート ヘッダを公開するインクルード パスをモジュールが追加している場合に、プライベート モジュールのインクルード パス検証メッセージをどのように処理するかを指定します。
$ ModuleIncludeSubdirectoryWarningLevel (WarningLevel):不要なモジュールのサブディレクトリ インクルード パス検証メッセージをどのように処理するかを指定します。
$ bDisableStaticAnalysis (Boolean):すべての静的解析 (Clang、MSVC、PVS-Studio) を無効にするかどうかを指定します。
$ bStaticAnalyzerExtensions (Boolean):EspXEngine プラグインを使用して追加のアナライザー拡張機能の警告を有効にするかどうかを指定します これは MSVC でのみサポートされています。 詳細は、https://learn.microsoft.com/ja-jp/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<Boolean>):このモジュールの再配布をオーバーライドするかどうかを表すフラグ。
$ bLegalToDistributeObjectCode (Boolean):公開可能ではない次のようなモジュールのコードや依存関係がこのモジュールに含まれていても、このモジュールからの出力を公開可能かどうかを指定します (例: 公開可能かどうかを指定します)。 これは、ソース コードではなくバイナリ ファイルのリリースを計画している場合に使用します。
$ 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 ブロック内の機密情報がエンジンまたは他の共有コードによって漏洩しないようにするために使用されます。 ただし、ライセンシーのゲーム コードではこれを許可する場合があります。
$ bDisableAutoRTFMInstrumentation (Boolean):AutoRTFMCompiler が有効になっている場合にのみ、このモジュールへの AutoRTFM インストルメンテーションを無効にします。
$ PrecompileForTargets (PrecompileTargetsType):このモジュールをどのターゲット用にプリコンパイルするかを指定します。
$ bRequiresImplementModule (Nullable<Boolean>):IMPLEMENT_MODULE マクロが実装されていることが、このモジュールで必要とされるかどうかを指定します。 ほとんどの UE モジュールでは、IMPLEMENT_MODULE マクロを使用して他のグローバルなオーバーロード (GMalloc にフォワードする new/delete 演算子など) を行っているため、 これを有効にする必要があります。
$ bLegacyPublicIncludePaths (Boolean):このモジュールが、インクルードされている他のモジュールのヘッダを、その「Public」フォルダのルートを基準とした相対パスとして修飾しているかどうかを指定します。 これにより、コンパイラに渡す必要がある検索パスの数が減るため、パフォーマンスが向上し、コンパイラのコマンドラインが短くなります。
$ bLegacyParentIncludePaths (Boolean):このモジュールが、インクルードされている他のモジュールのヘッダを、その親ディレクトリを基準とした相対パスとして修飾しているかどうかを指定します。 これにより、コンパイラに渡す必要がある検索パスの数が減るため、パフォーマンスが向上し、コンパイラのコマンドラインが短くなります。
$ bValidateCircularDependencies (Boolean):循環依存関係を許可リストに基づいて検証するかどうかを指定します。循環モジュール依存関係があると、ビルドに時間がかかります。 このオプションを無効にしないことを強くお勧めします。 このオプションは、常に許可リストに基づいて検証されるエンジン モジュールでは無視されます。
$ CppStandard (Nullable<CppStandardVersion>):このモジュールのコンパイルにどの規格を使用するかを指定します。
$ CStandard (Nullable<CStandardVersion>):このモジュールのコンパイルにどの規格を使用するかを指定します。
$ ModuleSymbolVisibility (SymbolVisibility):シンボルの可視性を制御します。