模块

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

Windows
MacOS
Linux
On this page

模块是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)

控制符号的可视性

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback