モジュール は 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 が返されます。
$ 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 構成で最適化を有効にしてコンパイルするなど)。作成元のルール アセンブリに基づいてデフォルトに初期化されます。
$ bDeterministic (Boolean):決定的コンパイル用のフラグを設定します (実験的機能であり、完全にはサポートされていません)。決定的リンクは TargetRules で制御されています。
$ bUseRTTI (Boolean):ランタイム タイプ情報を使用します。
$ bUseAVX (Boolean):サポートしているSSE または AVX 組み込みを使用するかどうか AVX 命令を生成するようにコンパイラに指示します。これを有効にすることで、PC プラットフォームのスペックが変更され、結果として生じた実行ファイルは AVX サポートがないとマシン上でクラッシュします。
$ bEnableBufferSecurityChecks (Boolean):バッファ セキュリティ チェックを有効にします。重大なセキュリティ リスクが回避されるため、通常は有効にします。
$ bEnableExceptions (Boolean):例外処理を有効にします。
$ bEnableObjCExceptions (Boolean):objective C 例外処理を有効にします。
$ bEnableObjCAutomaticReferenceCounting (Boolean): objective C automatic reference counting (ARC) を有効にします。これと true に設定すると、このモジュールでは共有 PCH を使用してはいけません。エンジンは短期的には ARC を広範に使用することはありません。これをしないと、共有 PCH が商品と異なるフラグでコンパイルされたため、コンパイル エラーになります。
$ bEnableUndefinedIdentifierWarnings (Boolean):#if 表現式で定義されていない識別子を使用した場合に出す警告を有効にします。
$ 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 を使用することをお勧めします。
$ StaticAnalyzerRulesets (HashSet
$ StaticAnalyzerCheckers (HashSetclang -Xclang -analyzer-checker-help
を実行することでも取得でき、clang -Xclang -analyzer-checker-help-alpha
を実行すると、実験段階のチェッカーの一覧を取得できます。
$ StaticAnalyzerDisabledCheckers (HashSetclang -Xclang -analyzer-checker-help
を実行することでも取得でき、clang -Xclang -analyzer-checker-help-alpha
を実行すると、実験段階のチェッカーの一覧を取得できます。
$ StaticAnalyzerAdditionalCheckers (HashSetclang -Xclang -analyzer-checker-help
を実行することでも取得でき、clang -Xclang -analyzer-checker-help-alpha
を実行すると、実験段階のチェッカーの一覧を取得できます。
$ bMergeUnityFiles (Boolean):コンパイルを高速化するために、モジュールおよび生成される unity ファイルをマージするかどうかを指定します。
$ MinSourceFilesForUnityBuildOverride (Int32):モジュールに対して unity ビルドをアクティブ化する前にビルドする、このモジュール内のソース ファイルの数。-1 以外に設定すると、MinGameModuleSourceFilesForUnityBuild に制御されるデフォルト設定値をオーバーライドします。
$ MinFilesUsingPrecompiledHeaderOverride (Int32):ゼロ以外の場合、BuildConfiguration.MinFilesUsingPrecompiledHeader
をオーバーライドします。
$ NumIncludedBytesPerUnityCPPOverride (Int32):ゼロ以外の場合、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 が真である必要があります。
$ bAddDefaultIncludePaths (Boolean):モジュールのデフォルトの include パスをすべて追加するかどうかです (Source/Public
の Source/Classes
フォルダ、サブフォルダなど)。
$ bIgnoreUnresolvedSymbols (Boolean):モジュールのダングリング (解決していない外部など) 記号を無視するかどうかを指定します。
$ bPrecompile (Boolean):このモジュールをプリコンパイルする必要があるかどうか。デフォルトは、ターゲットからの bPrecompile フラグです。モジュールがプリコンパイルされないようにするには、このフラグをクリアします。
$ bUsePrecompiled (Boolean):このモジュールを使用する必要があるかどうか。インストールされているアセンブリから作成されたモジュールでは、常に true です。
$ bAllowConfidentialPlatformDefines (Boolean):このモジュールが PLATFORM_XXXX
形式の定義を使用できるかどうかを指定します。XXXX
は機密プラットフォーム名です。これは、#if PLATFORM_XXXX
ブロック内の機密情報がエンジンまたはその他の共有コードによって漏洩しないようにするために使用されます。ただし、ライセンシーのゲームコードではこれを許可する場合があります。
$ PublicIncludePathModuleNames (List
$ PublicDependencyModuleNames (List
$ PrivateIncludePathModuleNames (List
$ PrivateDependencyModuleNames (List
$ CircularlyReferencedDependentModules (List
$ PublicSystemIncludePaths (List
$ PublicIncludePaths (ListPublic
」フォルダからすべてのファイルを検索できるので、この設定は現在必要ありません) 他のモジュールに公開されているインクルード ファイルへのすべてのパスのリストです。
$ InternalncludePaths (ListInternal
」フォルダからすべてのファイルを検索できるので、この設定は現在必要ありません) 他の内部モジュールに公開されているインクルード ファイルへのすべてのパスのリストです。
$ PrivateIncludePaths (ListPrivate
パスをインクルードしていること。相対パスを避けたい場合は 1 つ以上)。
$ PublicSystemLibraryPaths (List.lib
ファイルのディレクトリ) のリストです。通常は外部 (サードパーティ) モジュールに使用されます。代わりに PublicAdditionalLibaries を使用してください。
$ PrivateRuntimeLibraryPaths (List.so
ファイルなど)。
$ PublicRuntimeLibraryPaths (List.so
ファイルなど)。
$ PublicAdditionalLibraries (List.lib
ファイルの拡張子付きの名前) のリスト。通常は外部 (サードパーティ) モジュールに使用されます。
$ DependenciesToSkipPerArchitecture (Dictionary
$ PublicPreBuildLibraries (ListTargetRules.PreBuildSteps
または TargetRules.PreBuildTargets
のいずれかを使います。
$ PublicSystemLibraries (List.lib
ファイルを参照する場合は、代わりに PublicAdditionalLibraries を使用してください。
$ PublicFrameworks (List
$ PublicWeakFrameworks (List
$ PublicAdditionalFrameworks (List
$ AdditionalBundleResources (List
$ TypeLibraries (List
$ PublicDelayLoadDLLs (List
$ PrivateDefinitions (List
$ PublicDefinitions (List
$ DynamicallyLoadedModuleNames (List
$ RuntimeDependencies (RuntimeDependencyList):このモジュールがランタイム時に依存するファイルのリスト。これらのファイルは、ターゲットとともにステージングされます。
$ AdditionalPropertiesForReceipt (ReceiptPropertyList):ビルド レシートに追加される追加プロパティのリスト。
$ PrecompileForTargets (PrecompileTargetsType):このモジュールをどのターゲット用にプリコンパイルするかを指定します。
$ ExternalDependencies (List.Build.cs
ファイルを基準として解決されます。
$ SubclassRules (List
$ bRequiresImplementModule (NullableIMPLEMENT_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 のモジュールごとの構成を使用して設定されます。
$ bEnforceIWYU (Boolean):PCHUsage を ExplicitOrSharedPCH
に設定すると、「include what you use」ルールを使用します。モノリシック (Engine.h
、UnrealEd.h
など) を使用すると警告が出て、ソースファイルに一致するヘッダが最初に含まれているかどうかをチェックします。
$ bLegacyPublicIncludePaths (Boolean):このモジュールが、「Public」フォルダのルートに関連して、他のモジュールからのインクルードヘッダーを修飾するかどうか。これにより、コンパイラに渡す必要がある検索パスの数が減るため、パフォーマンスが向上し、コンパイラのコマンドラインが短くなります。
$ bLegacyParentIncludePaths (Boolean):このモジュールが、親ディレクトリからの相対的な他のモジュールからのヘッダを含むかどうかを指定します。これにより、コンパイラに渡す必要がある検索パスの数が減るため、パフォーマンスが向上し、コンパイラのコマンドラインが短くなります。