モジュール は 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)
{
// プロパティと設定はこちらから始まります
}
}
読み取り専用プロパティ
- IsPlugin (Boolean)
このモジュールがプラグインに含まれている場合は true。
- Logger (ILogger)
ターゲット ロガーのアクセサ。
- HasPackageOverride (Boolean)
このモジュールでオーバーライド タイプが指定されていれば、true が返されます。
- AutoSdkDirectory (String)
アクティブなホスト プラットフォーム用の「AutoSDK」ディレクトリ。
- EngineDirectory (String)
現在のエンジンのディレクトリ。
- PluginDirectory (String)
このプラグインが置かれているディレクトリのプロパティ。サードパーティの依存関係のパスを追加する場合に有用です。
- ModuleDirectory (String)
このモジュールが置かれているディレクトリのプロパティ。サードパーティの依存関係のパスを追加する場合に有用です。
- TestsDirectory (String)
モジュールの低レベル テスト ディレクトリ「Tests」が返されます。
- IsVcPackageSupported (Boolean)
ビルド コンフィギュレーションで VcPkg がサポートされているかどうかが返されます。
読み取り/書き込みプロパティ
- Type (ModuleType)
モジュールのタイプ。
- BinariesSubFolder (String)
DLL のビルド時にこのモジュールを配置するための「Binaries/PLATFORM」フォルダのサブフォルダです。これは、TargetPlatform モジュールや ShaderFormat モジュールなど、検索で見つかったモジュールでのみ使用できます。FindModules を使用してモジュールを追跡しないと、これらのモジュールは見つかりません。
- PrivatePCHHeaderFile (String)
このモジュールの明示的なプライベート PCH。これが指定されていると、このモジュールが共有 PCH を使用しないことを意味します。
- SharedPCHHeaderFile (String)
このモジュールによって提供される共有 PCH のヘッダ ファイル名。パブリック C++ ヘッダ ファイルの有効な相対パスである必要があります。これは、他の多数の C++ モジュールでインクルードされるヘッダ ファイルに対してのみ設定します。
- ShortName (String)
このモジュールの中間ディレクトリおよび中間ファイルの代替名を指定します。パスの長さの制限に達している場合に便利です。
- bTreatAsEngineModule (Boolean)
このモジュールをエンジン モジュールとして扱うかどうかを指定します (例:エンジン定義を使用している、PCH である、DebugGame コンフィギュレーションで最適化を有効にしてコンパイルされているなど)。作成元のルール アセンブリに基づいてデフォルトに初期化されます。
- bUseRTTI (Boolean)
ランタイム タイプ情報を使用します。
- bCodeCoverage (Boolean)
コード カバレッジ コンパイル/リンクのサポートを有効にします。
- 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 はコンシューマーとは異なるフラグでコンパイルされているため、これを行わないとコンパイル エラーが生じます。
- bWarningsAsErrors (Boolean)
すべての警告をエラーとして有効にするかどうかを指定します。UE ではすでにほとんどの警告をエラーとして有効にしていますが、非推奨であることの警告など、いくつかのものは有効になっていません。
- bEnableUndefinedIdentifierWarnings (Boolean)
#if
式で使用されている未定義の識別子に対する警告を有効にします。- bDisableStaticAnalysis (Boolean)
すべての静的解析 (Clang、MSVC、PVS-Studio) を無効にします。
- bStaticAnalyzerExtensions (Boolean)
EspXEngine プラグインを使用して追加のアナライザー拡張機能の警告を有効にします。これは MSVC でのみサポートされています。詳細については、「C++ Core ガイドライン チェッカーの使用」を参照してください。これにより、デフォルトで大量の警告が追加されます。これを有効にする場合は、StaticAnalyzerRulesets を使用することをお勧めします。
- StaticAnalyzerRulesets (HashSet
) 警告をフィルタするために使用する静的アナライザーのルールセット。これは MSVC でのみサポートされています。詳細については、「規則セットを使用して実行対象の C++ 規則を指定する」を参照してください。
- StaticAnalyzerCheckers (HashSet
) 静的アナライザーのデフォルト チェッカーの代わりに有効にするチェッカー。これは Clang でのみサポートされています。完全なリストについては、「Analyzer Checkers」を参照してください。または、
clang -Xclang -analyzer-checker-help
を実行して取得することもできます。clang -Xclang -analyzer-checker-help-alpha
を実行すると、実験的機能のチェッカーのリストを取得することができます。- StaticAnalyzerDisabledCheckers (HashSet
) 無効にする、静的アナライザーのデフォルト チェッカー。StaticAnalyzerCheckers が指定されている場合は使用されません。これは Clang でのみサポートされています。これは、無効になっているデフォルト チェッカーである deadcode.DeadStores および security.FloatLoopCounter をオーバーライドします。完全なリストについては、「Analyzer Checkers」を確認してください。または、
clang -Xclang -analyzer-checker-help
を実行して取得することもできます。clang -Xclang -analyzer-checker-help-alpha
を実行すると、実験的機能のチェッカーのリストを取得することができます。- StaticAnalyzerAdditionalCheckers (HashSet
) 有効にする、静的アナライザーのデフォルトではないチェッカー。StaticAnalyzerCheckers が指定されている場合は使用されません。これは Clang でのみサポートされています。完全なリストについては、「Analyzer Checkers」を参照してください。または、
clang -Xclang -analyzer-checker-help
を実行して取得することもできます。clang -Xclang -analyzer-checker-help-alpha
を実行すると、実験的機能のチェッカーのリストを取得することができます。- 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 など) モジュールのコードや依存関係がこのモジュールに含まれていても、このモジュールからの出力を公開できるかどうかを指定します。これは、ソース コードではなくバイナリ ファイルのリリースを計画している場合に使用します。
- AllowedRestrictedFolders (List
) 制限されているフォルダ名を伝播することなく、このバイナリのコンパイル時に参照することが許可されているフォルダのリスト。
- AliasRestrictedFolders (Dictionary
) エイリアス化され、制限されているフォルダ参照のセット。
- 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 インストルメンテーションを有効にします。
- 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 ファイルの拡張子付きの名前)。通常は外部 (サードパーティ) モジュールに使用されます
- 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
) 遅延ロード ダイナミック リンクライブラリのリスト。通常は外部 (サードパーティ) モジュールに使用されます。
- 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 (Nullable
) このモジュールのコンパイルにどの規格を使用するかを指定します。
- CStandard (Nullable
) このモジュールのコンパイルにどの規格を使用するかを指定します。
- GenerateHeaderFuncs (List
>>) ヘッダ ファイルを生成するために呼び出されるサブディレクトリの名前と関数のリスト。生成されたコード ディレクトリにサブディレクトリ名が追加され、ヘッダが内部に生成される新しいディレクトリが形成されます。
- ModuleSymbolVisibility (SymbolVisibility)
シンボルの可視性を制御します。
- Name (String)
このモジュールの名前。
- OverridePackageType (PackageOverrideType)
別のパッケージ フラグを設定するモジュールのオーバーライドされたタイプ。プラグインの一部であるモジュールでは、すでに
.uplugin
ファイルで設定されているため、使用できません。- OptimizeCode (CodeOptimization)
このモジュールのコードを最適化する必要がある場合に指定します。
- OptimizationLevel (OptimizationMode)
速度、コード サイズ、またはその両方の最適化レベルを微調整できます。これにはプライベート PCH (または、非推奨の NoPCH) が必要です。
- PCHUsage (PCHUsageMode)
このモジュールで使用するプリコンパイル済みヘッダを指定します。
- DefaultBuildSettings (BuildSettingsVersion)
どのエンジン バージョンのビルド設定をデフォルトで使用するかを指定します。
- IncludeOrderVersion (EngineIncludeOrderVersion)
このモジュールのコンパイル時にどのバージョンのインクルード順序を使用するかを指定します。コマンドラインまたはモジュールのルールで
-ForceIncludeOrder
を使用してオーバーライドできます。- bUseAVX (Boolean)
廃止予定:SSE または AVX 組み込み関数が使用されているかどうかに関係なく、AVX 命令がサポートされているプラットフォームでは AVX 命令を生成するようにコンパイラに指示します。なお、これを有効にすると、PC プラットフォームの最小要件が変わり、生成される実行ファイルは、AVX がサポートされていないマシンではクラッシュします。
- DeterministicWarningLevel (WarningLevel)
決定論的警告をどのように処理するかを指定します (実験的機能)。
- ShadowVariableWarningLevel (WarningLevel)
シャドウ変数に対する警告をどのように処理するかを指定します。
- UnsafeTypeCastWarningLevel (WarningLevel)
安全でない暗黙の型キャストに対する警告をどのように処理するかを指定します (たとえば、double->float または int64->int32 など)。
- ModuleIncludePathWarningLevel (WarningLevel)
一般的なモジュールのインクルード パス検証メッセージをどのように処理するかを指定します
- ModuleIncludePrivateWarningLevel (WarningLevel)
プライベート モジュールのインクルード パス検証メッセージをどのように処理するかを指定します。モジュールは、プライベート ヘッダを公開するインクルード パスを追加します。
- ModuleIncludeSubdirectoryWarningLevel (WarningLevel)
不要なモジュールのサブディレクトリ インクルード パス検証メッセージをどのように処理するかを指定します。
- bUseUnity (Boolean)
unity ビルドが有効になっている場合に、これを使用すると、この特定のモジュールが Unity を使用してビルドされるかどうかをオーバーライドできます。これは、BuildConfiguration のモジュールごとのコンフィギュレーションを使用して設定されます。
- bEnforceIWYU (Boolean)
PCHUsage を ExplicitOrSharedPCH に設定すると、「include what you use」ルールが実行され、単一のブロック ヘッダ (「Engine.h」、「UnrealEd.h」など) が使用されると、警告が表示されます。また最初にソース ファイルに一致するヘッダがインクルードされているかどうかを確認します。
- bLegacyPublicIncludePaths (Boolean)
このモジュールが、インクルードされている他のモジュールのヘッダを、その「'Public'」フォルダのルートを基準とした相対パスとして修飾するかどうかを指定します。これにより、コンパイラに渡す必要がある検索パスの数が減るため、パフォーマンスが向上し、コンパイラのコマンドラインが短くなります。
- bLegacyParentIncludePaths (Boolean)
このモジュールが、インクルードされている他のモジュールのヘッダを、その親ディレクトリを基準とした相対パスとして修飾するかどうかを指定します。これにより、コンパイラに渡す必要がある検索パスの数が減るため、パフォーマンスが向上し、コンパイラのコマンドラインが短くなります。