虚幻编译系统模块文件

虚幻编译系统编译目标时使用的目标文件引用。

Windows
MacOS
Linux
On this page

总览

模块是 UE4 的编译块。引擎作为模块的一个大集合而实现,而游戏则提供其自身的模块进行扩大。每个模块都封装了一套功能,可提供一个公共接口和编译环境(利用宏、包含路径等),以便其他模块使用。

模块通过带 .build.cs 扩展名的 C# 源文件进行声明,保存在项目的 Source 目录下。属于模块的 C++ 源代码保存在 .build.cs 文件旁,或其子目录中。每个 .build.cs 文件声明派生自 ModuleRules 基类的类,并设置属性控制器从构造函数进行编译的方式。这些 .build.cs 文件由虚幻编译工具编译,并被构造来确定整体编译环境。

.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用于这些搜索,则不会找到任何模块。

OptimizeCode (CodeOptimization)

指定何时优化此模块的代码。

PrivatePCHHeaderFile (String)

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

SharedPCHHeaderFile (String)

此模块提供的共享PCH的标头文件名。它必须是公用C++标头文件的有效相对路径。它仅适用于许多其他C++模块中包含的标头文件。

ShortName (String)

为此模块指定中间文件的中间目录,并为该文件指定其他名称。当存在路径长度限制时,这很有用。

PCHUsage (PCHUsageMode)

此模块使用预编译标头

bTreatAsEngineModule (Boolean)

此模块是否应视为引擎模块(例如,使用引擎定义、PCH、在DebugGame配置中启用优化的情况下编译等)。根据用于生成的汇编规则初始化为默认值。

bUseBackwardsCompatibleDefaults (Boolean)

是否使用此模块的向后兼容默认值。默认情况下,引擎模块始终使用最新的默认设置,而项目模块不使用默认设置(以便更轻松地迁移)。

bUseRTTI (Boolean)

使用运行时类型信息

bUseAVX (Boolean)

使用AVX指令

bEnableBufferSecurityChecks (Boolean)

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

bEnableExceptions (Boolean)

启用异常处理

bEnableObjCExceptions (Boolean)

启用objective C异常处理

bEnableShadowVariableWarnings (Boolean)

启用阴影变量的警告

bEnableUndefinedIdentifierWarnings (Boolean)

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

bFasterWithoutUnity (Boolean)

如果设置为True并启用Unity构建,则此模块将在没有Unity的情况下构建。

MinSourceFilesForUnityBuildOverride (Int32)

在为该模块启用Unity构建之前,此模块中的源文件数。如果设置为-1以外的任何值,则会覆盖由由MinGameModuleSourceFilesForUnityBuild控制的默认设置

MinFilesUsingPrecompiledHeaderOverride (Int32)

如果它不为零,则覆盖BuildConfiguration.MinFilesUsingPrecompiledHeader。

bBuildLocallyWithSNDBS (Boolean)

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

IsRedistributableOverride (Nullable<Boolean>)

此模块的重新分发覆盖标志。

bOutputPubliclyDistributable (Boolean)

即使模块上的代码/依赖项(即CarefullyRedist、NotForLicensees、NoRedist)不公开,此模块的输出是否可以公开分发。当要分发二进制文件而不是源代码时才应使用它。

WhitelistRestrictedFolders (List<String>)

在编译此二进制文件时可以引用但不传播受限文件夹名称的文件夹列表

bEnforceIWYU (Boolean)

将PCHUsage设置为ExplicitOrSharedPCH时强制实施"包括你使用的内容"规则。使用单块标头(例如Engine.h、UnrealEd.h等)将发出警告并检查是否首先包含与源文件匹配的标头。

bAddDefaultIncludePaths (Boolean)

是否添加模块的所有默认包含路径(例如Source/Public的Source/Classes文件夹、子文件夹)。

bPrecompile (Boolean)

是否预编译此模块。默认值为目标的bPrecompile标志。清除此标志可防止预编译该模块。

bUsePrecompiled (Boolean)

此模块是否使用预编译数据。对于从已安装的程序集创建的模块始终设置为True。

PublicIncludePathModuleNames (List<String>)

带有标头文件的模块名称列表(无需路径),需要由模块的公共标头访问,但不需要再"导入"或链接。

PublicDependencyModuleNames (List<String>)

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

PrivateIncludePathModuleNames (List<String>)

带有标头文件的模块名称列表(无需路径),需要由模块的私有代码文件访问,但不需要再"导入"或链接。

PrivateDependencyModuleNames (List<String>)

私有依赖性模块名称列表。这些是私有代码所依赖的模块,但公共include文件中没有任何依赖。

CircularlyReferencedDependentModules (List<String>)

它是遗留的,因此不会在新代码中使用。视为循环引用的模块依赖项列表。此模块必须已添加到公共或私有依赖模块列表中。

PublicSystemIncludePaths (List<String>)

系统/库include路径列表,通常用于外部(第三方)模块。在解析标头依赖项时未检查的公共稳定标头文件目录。

PublicIncludePaths (List<String>)

(当前不需要此设置,因为可以从"Public"文件夹中搜索所有文件)公开给其他模块的include文件的所有路径列表

PrivateIncludePaths (List<String>)

此模块内部include文件的所有路径的列表,未公开给其他模块(至少有一个包含在"私有"路径中,如果要避免相对路径,可以添加更多)

PublicLibraryPaths (List<String>)

系统/库路径列表(.lib文件的目录),通常用于外部(第三方)模块

PublicAdditionalLibraries (List<String>)

其他库的列表(包括扩展名的.lib文件的名称),通常用于外部(第三方)模块

PublicFrameworks (List<String>)

XCode框架列表(iOS和MacOS)

PublicWeakFrameworks (List<String>)

弱框架列表(用于OS版本转换)

PublicAdditionalFrameworks (List<UEBuildFramework>)

其他框架的列表,通常用于Mac和iOS上的外部(第三方)模块

AdditionalBundleResources (List<UEBuildBundleResource>)

应复制到Mac或iOS应用捆绑包的其他资源的列表

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文件解析的。

bLegacyPublicIncludePaths (Nullable<Boolean>)

此模块是否相对于"公共"文件夹的根目录限定来自其他模块的包含标头。该设置会减少必须传递给编译器的搜索路径数量,从而提高性能并缩短编译器命令行长度。

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