模块

UBT模块概述,包括属性的介绍。

Choose your operating system:

Windows

macOS

Linux

本页面的内容

模块是UE4的构建块。引擎是以大量模块的集合形式实现的,游戏提供自己的模块来扩充自己。每个模块都封装了一组功能,并且可以提供公共接口和编译环境(包括宏、路径等)供其他模块使用。

模块是通过C#源文件声明的,扩展名为.build.cs,存储在项目的 源(Source) 目录下。属于一个模块的C++源代码与.build.cs文件并列存储,或者存储在它的子目录中。每个.build.cs文件都声明一个类,从ModuleRules基类衍生而来,并设置属性来控制如何从其构造函数进行构建。这些.build.cs文件都由UnrealBuildTool编译,并被构造来确定整个编译环境。

.build.cs文件的典型结构如下。

using UnrealBuildTool;
using System.Collections.Generic;
public class MyModule : ModuleRules
{
    public MyModule(ReadOnlyTargetRules Target) : base(Target)
    {
        // Settings go here
    }
}

读/写属性

Type (ModuleType)

模块的类型

BinariesSubFolder (String)

Binaries/PLATFORM文件夹的子文件夹,用于在编译DLL时放入此模块。该文件夹仅供通过搜索找到的模块使用,如TargetPlatform或ShaderFormat模块。如果未使用FindModules进行查找定位,将不会找到该模块。

PrivatePCHHeaderFile (String)

该模块的显式私有PCH。意味着该模块将不会使用共享的PCH。

SharedPCHHeaderFile (String)

该模块提供的共享PCH的标头文件名。必须为公共C++标头文件的有效相对路径。此设置应该仅应用于那些被大量其它C++模块包含的标头文件。

ShortName (String)

为该模块的中间目录和中间文件指定一个替代名称。路径长度达到上限时,此功能非常实用。

bTreatAsEngineModule (Boolean)

是否应将此模块视为引擎模块(例如,使用引擎定义、PCH、以DebugGame配置中启用的优化进行编译等……)。根据创建它的规则程序集初始化为默认值。

bUseRTTI (Boolean)

使用运行时类型信息

bUseAVX (Boolean)

指示编译器在支持的平台上,在使用SSE或AVXD内联函数的地方生成AVX指令。注意,启用此项后,会修改PC平台的minspec,由此得到的可执行文件在不支持AVX的计算机上将会崩溃。

bEnableBufferSecurityChecks (Boolean)

启用缓冲区安全检查。通常应启用,因为它可以防止严重的安全风险。

bEnableExceptions (Boolean)

启用异常处理

bEnableObjCExceptions (Boolean)

启用Objective C异常处理

bEnableUndefinedIdentifierWarnings (Boolean)

启用#if表达式中使用未定义辨识符的警告

MinSourceFilesForUnityBuildOverride (Int32)

在统一编译之前,该模块中将为该模块激活的源文件的数量。如果设为-1以外的任何值,将覆盖由MinGameModuleSourceFilesForUnityBuild控制的默认设置

MinFilesUsingPrecompiledHeaderOverride (Int32)

若不为零,则覆盖BuildConfiguration.MinFilesUsingPrecompiledHeader。

bBuildLocallyWithSNDBS (Boolean)

模块使用#import,因此在使用SN-DBS进行编译时必须在本地编译

IsRedistributableOverride (Nullable<Boolean>)

为该模块重新分配覆盖标记。

bLegalToDistributeObjectCode (Boolean)

是否可以公开分发此模块的输出,即使它拥有不公开的模块(即CarefullyRedist, NotForLicensees, NoRedist)的代码/依赖性也同样如此。要发布二进制文件而非源时,应使用此功能。

WhitelistRestrictedFolders (List<String>)

编译此二进制文件时所要引用的白名单文件夹列表,不含传播受限的文件夹名称

AliasRestrictedFolders (Dictionary<String, String>)

一组使用别名的受限目录引用

bEnforceIWYU (Boolean)

当PCHUsage设为ExplicitOrSharedPCH时,强制执行"包含你使用的内容"规则;使用单块标头(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块内的机密信息。然而,接受许可的一方可能想要获得这些代码。注意:这是对未来的展望,以前的保密平台(如PS4)不太可能受到限制

PublicIncludePathModuleNames (List<String>)

包含标头文件的模块名称列表(不需要路径),我们模块的公共标头需要对这些标头文件进行访问,但是不需要"导入"或链接。

PublicDependencyModuleNames (List<String>)

公共依赖性模块名称的列表(不需要路径)(自动执行私有/公共包含)。这些是我们的公共源文件所需要的模块。

PrivateIncludePathModuleNames (List<String>)

包含标头文件的模块名称列表(不需要路径),我们模块的私有代码文件需要对这些标头文件进行访问,但是不需要"导入"或链接。

PrivateDependencyModuleNames (List<String>)

私有依赖性模块名称列表。我们的私有代码依赖这些模块,但我们的公共代码不依赖这些模块。

CircularlyReferencedDependentModules (List<String>)

出于遗留原因,不应在新代码中使用。应被视为循环引用的模块依赖性列表。该模块必须已经添加至公共或私有依赖模块列表中。

PublicSystemIncludePaths (List<String>)

系统/库列表包含路径列表——通常用于外部(第三方)模块。这些是公共的稳定标头文件目录,在解析标头文件依赖性时不会被检查。

PublicIncludePaths (List<String>)

(当前不需要此设置,因为我们会从"Public"文件夹中发现所有文件)所有路径的列表,包含公开给其他模块的文件。

PrivateIncludePaths (List<String>)

通向此模块内部包含文件的所有路径的列表,不向其他模块公开(至少有一个包含到"Private"路径,如果要避免相对路径,则会更多)

PublicSystemLibraryPaths (List<String>)

系统库路径列表(.lib文件的目录)——对于外部(第三方)模块,请使用PublicAdditionalLibaries。

PrivateRuntimeLibraryPaths (List<String>)

运行时各个库的搜索路径列表(例如.so文件)

PublicRuntimeLibraryPaths (List<String>)

运行时各个库的搜索路径列表(例如.so文件)

PublicAdditionalLibraries (List<String>)

附加库的列表(.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>)

附加框架列表——通常用于Mac和iOS上的外部(第三方)模块

AdditionalBundleResources (List<BundleResource>)

应被复制到Mac或iOS应用捆绑包的附加资源列表

TypeLibraries (List<TypeLibrary>)

需要生成头文件的类型库列表(仅限Windows)

PublicAdditionalShadowFiles (List<String>)

针对在远程设备(如iOS)上执行的版本,此列表包含需要复制的附加文件,以便应用程序能够成功链接。源/标头文件和PCH会自动复制。通常这只是预编译的第三方库依赖性的列表。

PublicDelayLoadDLLs (List<String>)

延迟加载DLL列表——通常用于外部(第三方)模块

PrivateDefinitions (List<String>)

该模块的私有编译器定义

PublicDefinitions (List<String>)

该模块的公共编译器定义

DynamicallyLoadedModuleNames (List<String>)

此模块在运行时可能需要的附加模块

RuntimeDependencies (RuntimeDependencyList)

该模块在运行时依赖的文件列表。这些文件将与目标一同暂存。

AdditionalPropertiesForReceipt (ReceiptPropertyList)

要添加到编译接收中的附加属性列表

PrecompileForTargets (PrecompileTargetsType)

应该针对哪个目标对此模块进行预编译

ExternalDependencies (List<String>)

外部文件,如果修改,会使makefile无效。相对路径相对于.build.cs文件解析。

AdditionalCodeGenDirectories (List<String>)

包含已生成的互操作(interop)文件的外部目录。

SubclassRules (List<String>)

子类规则文件,如果修改,会使makefile无效。

bRequiresImplementModule (Nullable<Boolean>)

此模块的实现是否需要IMPLEMENT_MODULE宏。大多数UE4模块都有此需要,因为我们使用IMPLEMENT_MODULE宏来执行其他全局重载(例如运算符新建/删除向GMalloc的传递)。

CppStandard (CppStandardVersion)

用于编译此模块的标准。

ModuleSymbolVisibility (SymbolVisibility)

控制符号的可视性

欢迎帮助改进虚幻引擎文档!请告诉我们该如何更好地为您服务。
填写问卷调查
取消