モジュール は、Unreal Engine (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)
{
// Settings go here
}
}
読み取り用プロパティ
$ IsPlugin (Boolean): True if a Plugin contains this module
$ HasPackageOverride (Boolean): Returns true if there has been an override type specified on this module
$ AutoSdkDirectory (String): The AutoSDK directory for the active host platform
$ EngineDirectory (String): The current engine directory
$ PluginDirectory (String): Property for the directory containing this plugin. Useful for adding paths to third party dependencies.
$ ModuleDirectory (String): Property for the directory containing this module. Useful for adding paths to third party dependencies.
$ IsVcPackageSupported (Boolean): Returns if VcPkg is supported for the build configuration.
読み取り / 書き込み用プロパティ
$ 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):ランタイム型情報を使います。
$ bUseAVX (Boolean):サポートしているSSE または AVX 組み込みを使用するかどうか AVX 命令を生成するようにコンパイラに指示します。これを有効にすることで、PC プラットフォームのスペックが変更され、結果として生じた実行ファイルは AVX サポートがないとマシン上でクラッシュします。
$ bEnableBufferSecurityChecks (Boolean):バッファ セキュリティ チェックを有効にします。重大なセキュリティ リスクを回避するため、通常は有効にします。
$ bEnableExceptions (Boolean):例外処理を有効にします。
$ bEnableObjCExceptions (Boolean):objective C 例外処理を有効にします。
$ bEnableUndefinedIdentifierWarnings (Boolean):#if 表現式で定義されていない識別子を使用した場合に出す警告を有効にします。
$ MinSourceFilesForUnityBuildOverride (Int32):unity ビルド前のこのモジュール内のソース ファイルの数は、そのモジュールに対してアクティブになります。-1 以外に設定すると、MinGameModuleSourceFilesForUnityBuild に制御されるデフォルト設定値をオーバーライドします。
$ MinFilesUsingPrecompiledHeaderOverride (Int32):「0」以外の場合、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」ルールが実行され、単一のブロック ヘッダ (「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
$ PublicDependencyModuleNames (List
$ PrivateIncludePathModuleNames (List
$ PrivateDependencyModuleNames (List
$ CircularlyReferencedDependentModules (List
$ PublicSystemIncludePaths (List
$ PublicIncludePaths (List
$ InternalncludePaths (List
$ PrivateIncludePaths (List
$ PublicSystemLibraryPaths (List
$ PrivateRuntimeLibraryPaths (List
$ PublicRuntimeLibraryPaths (List
$ PublicAdditionalLibraries (List
$ PublicPreBuildLibraries (List
$ PublicSystemLibraries (List
$ PublicFrameworks (List
$ PublicWeakFrameworks (List
$ PublicAdditionalFrameworks (List
$ AdditionalBundleResources (List
$ TypeLibraries (List
$ PublicDelayLoadDLLs (List
$ PrivateDefinitions (List
$ PublicDefinitions (List
$ DynamicallyLoadedModuleNames (List
$ RuntimeDependencies (RuntimeDependencyList):このモジュールが実行時に依存するファイルのリストです。これらのファイルは、ターゲットとともにステージングされます。
$ AdditionalPropertiesForReceipt (ReceiptPropertyList):Build receipt に追加される追加プロパティ リストです。
$ PrecompileForTargets (PrecompileTargetsType):このモジュールをプリコンパイルする必要のあるターゲットです。
$ ExternalDependencies (List
$ AdditionalCodeGenDirectories (List
$ SubclassRules (List
$ bRequiresImplementModule (Nullable
$ CppStandard (CppStandardVersion):このモジュールのコンパイルに標準で使用します。
$ ModuleSymbolVisibility (SymbolVisibility):記号の可視性を制御します
$ Name (String):このモジュールの名前
$ OverridePackageType (PackageOverrideType):異なるパッケージ フラグを設定するモジュールのタイプをオーバーライドします。プラグインの一部であるモジュールは、すでに .uplugin ファイルに設定されているため、使用できません。
$ OptimizeCode (CodeOptimization):このモジュールのコードを最適化する必要がある場合に使用します。
$ PCHUsage (PCHUsageMode):このモジュールのプリコンパイル済みヘッダの使用します
$ DefaultBuildSettings (BuildSettingsVersion):デフォルトで使用するエンジン バージョンのビルド設定。
$ ShadowVariableWarningLevel (WarningLevel):シャドウ変数の警告を処理する方法
$ UnsafeTypeCastWarningLevel (WarningLevel):安全でない暗黙の型キャスト警告を処理する方法 (例: double->float または int64 -> int32)
$ bUseUnity (Boolean):Unity ビルドが有効になっている場合、この特定のモジュールが Unity を使用してビルドするかどうかをオーバーライドするために使用できます。これは、BuildConfiguration のモジュールごとの構成を使用して設定されます。
$ bLegacyPublicIncludePaths (Boolean):このモジュールが、「'Public'」フォルダーのルートに関連して、他のモジュールからのインクルードヘッダーを修飾するかどうか。これにより、コンパイラに渡す必要のある検索パスの数が減り、パフォーマンスが向上し、コンパイラのコマンドラインの長さが短縮されます。