虚幻构建系统目标文件

构建目标时虚幻构建系统使用的目标文件的参考。

Windows
MacOS
Linux
On this page

概述

UnrealBuildTool支持构建多种目标类型:

  • 游戏——需要烘焙数据才能运行的独立游戏。

  • 客户端——与游戏相同,但不需要包含任何服务器代码。适用于联网游戏。

  • 服务器——与游戏相同,但不包含任何客户端代码。适用于联网游戏中的专用服务器。

  • 编辑器——扩展虚幻编辑器的目标。

  • 程序——基于虚幻引擎构建的独立实用程序。

目标是通过C#源文件声明的,扩展名为.target.cs,并存储在项目的 Source 目录下。每个.target.cs文件都声明一个类,从TargetRules基类衍生而来,并设置属性来控制如何从其构造函数进行构建。当要求构建目标时,UnrealBuildTool将编译target.cs文件,并在其中构造类来确定其设置。

类的名称必须与在其中声明这个类的文件的名称相匹配,后跟"Target"(例如,MyProject.target.cs定义类"MyProjectTarget")。

目标文件的典型结构如下。

using UnrealBuildTool;
using System.Collections.Generic;

public class MyProjectTarget :TargetRules
{
    public MyProjectTarget(TargetInfo Target) : base(Target)
    {
        Type = TargetType.Game;

        // Other properties go here
    }
}

只读属性

Name (String)

该目标的名称。

Platform (UnrealTargetPlatform)

构建该目标时所针对的平台。

Configuration (UnrealTargetConfiguration)

构建的配置。

Architecture (String)

构建该目标时所针对的架构(如果使用默认值,则为空字符串)。

ProjectFile (FileReference)

包含该目标的项目的项目文件路径。

Version (ReadOnlyBuildVersion)

当前构建版本

读/写属性

$ Type (TargetType): 目标的类型。

bUsesSteam (Boolean)

目标是否使用Steam。

bUsesCEF3 (Boolean)

目标是否使用CEF3。

bUsesSlate (Boolean)

项目是否使用可视化Slate UI(和低级别开窗/消息传递相反,它始终可用)。

bUseStaticCRT (Boolean)

对静态CRT强制链接。由于需要共享分配器实现(举例),而且TPS库需要彼此一致,无法在引擎范围内完全支持它,但是可将它用于实用程序。

bDebugBuildsActuallyUseDebugCRT (Boolean)

为调试构建启用调试C++运行时(CRT)。默认情况下,我们总是使用发布运行时,因为调试版本在调试虚幻引擎项目时作用不大,而对调试CRT库的链接使我们在使用调试CRT时还必须编译第三方库依赖性(通常执行速度更慢)。通常,请求一份单独的第三方静态库的调试版本并不方便,因此你只能调试自己程序的代码。

bOutputPubliclyDistributable (Boolean)

即使该目标依赖位于具有特殊限制(例如,CarefullyRedist、NotForLicensees、NoRedist)的文件夹中的模块,是否仍公开分发该目标的输出。

UndecoratedConfiguration (UnrealTargetConfiguration)

指定其二进制文件不需要"-Platform-Configuration"后缀的配置。

bBuildAllPlugins (Boolean)

构建我们能够找到的所有插件,即使它们未启用。对于仅包含内容的项目,它非常有用。在仅包含内容的项目中,你构建UE4Editor目标,但是针对启用插件的游戏运行它。

AdditionalPlugins (List<String>)

一组需要包含在该目标中的其他插件。它允许你引用无法禁用的非可选插件模块,也允许你针对程序目标中不属于ModuleHostType类别的特定模块进行构建。

ExcludePlugins (List<String>)

一组要从该目标中排除的插件。请注意,项目文件可能仍将引用它们,因此应将它们标记为"可选",以避免在运行时无法找到它们。

PakSigningKeysFile (String)

要嵌入到可执行文件中的pak签名密钥集合的路径。

SolutionDirectory (String)

允许程序目标指定其自己的解决方案文件夹路径。

bBuildInSolutionByDefault (Nullable<Boolean>)

目标是否应包含在默认解决方案构建配置中

bOutputToEngineBinaries (Boolean)

将可执行文件输出到引擎二进制文件文件夹中。

bShouldCompileAsDLL (Boolean)

是否将该目标编译为DLL。要求必须将LinkType设置为TargetLinkType.Monolithic。

ExeBinariesSubFolder (String)

用来放置可执行文件的子文件夹,相对于默认位置。

GeneratedCodeVersion (EGeneratedCodeVersion)

允许目标模块覆盖UHT代码生成版本。

bCompilePhysX (Boolean)

是否包括PhysX支持。

bCompileAPEX (Boolean)

是否包括PhysX APEX支持。

bCompileNvCloth (Boolean)

是否包括NvCloth。

bCompileICU (Boolean)

是否在Core中包括ICU unicode/国际化(i18n)支持。

bCompileCEF3 (Boolean)

是否编译CEF3支持。

bBuildEditor (Boolean)

是否编译编辑器。只有桌面平台(Windows或Mac)会使用它,其他平台会将它强制为false。

bBuildRequiresCookedData (Boolean)

是否编译与构建资源相关的代码。主机通常无法构建资源。桌面平台通常可以。

bBuildWithEditorOnlyData (Boolean)

是否在禁用WITH_EDITORONLY_DATA的情况下编译。仅Windows会使用它,其他平台会将它强制为false。

bBuildDeveloperTools (Boolean)

是否编译开发者工具。

bForceBuildTargetPlatforms (Boolean)

是否强制编译目标平台模块,即使通常不构建它们。

bForceBuildShaderFormats (Boolean)

是否强制编译着色器格式模块,即使通常不构建它们。

bCompileSimplygon (Boolean)

我们是否应进行编译,以支持Simplygon。

bCompileSimplygonSSF (Boolean)

我们是否应进行编译,以支持Simplygon的SSF库。

bCompileLeanAndMeanUE (Boolean)

是否编译UE的精简版。

bUseCacheFreedOSAllocs (Boolean)

是否将缓存释放后的操作系统alloc与MallocBinned配合使用

bCompileAgainstEngine (Boolean)

为包含引擎项目的所有构建版本启用它。仅在构建仅与Core链接的独立应用程序时禁用。

bCompileAgainstCoreUObject (Boolean)

为包含CoreUObject项目的所有构建版本启用它。仅在构建仅与Core链接的独立应用程序时禁用。

bIncludeADO (Boolean)

如果为true,在Core中包括ADO数据库支持。

bCompileRecast (Boolean)

是否编译Recast寻路网格体生成。

bCompileSpeedTree (Boolean)

是否编译SpeedTree支持。

bForceEnableExceptions (Boolean)

为所有模块启用例外。

bUseInlining (Boolean)

为所有模块启用内嵌。

bForceEnableObjCExceptions (Boolean)

为所有模块启用例外。

bForceEnableRTTI (Boolean)

为所有模块启用RTTI。

bWithServerCode (Boolean)

仅编译server-only@@@代码。

bCompileWithStatsWithoutEngine (Boolean)

没有引擎时是否也包括统计数据支持。

bCompileWithPluginSupport (Boolean)

是否包括插件支持。

bIncludePluginsForTargetPlatforms (Boolean)

是否允许支持所有目标平台的插件。

bWithPerfCounters (Boolean)

是否包括PerfCounters支持。

bUseLoggingInShipping (Boolean)

是否针对测试/发布构建版本开启日志记录。

bLoggingToMemoryEnabled (Boolean)

是否针对测试/发布构建版本开启记录到内存。

bUseLauncherChecks (Boolean)

是否检查进程是否是通过外部启动程序启动的。

bUseChecksInShipping (Boolean)

是否针对测试/发布构建版本开启检查(断言)。

bCompileFreeType (Boolean)

如果需要FreeType支持则为True。

bCompileForSize (Boolean)

如果希望优先优化大小而非速度则为True。

bForceCompileDevelopmentAutomationTests (Boolean)

是否编译开发自动化测试。

bForceCompilePerformanceAutomationTests (Boolean)

是否编译性能自动化测试。

bEventDrivenLoader (Boolean)

如果为true,则在转化构建版本中使用事件驱动加载器。@todoio 在异步加载重构之后需要使用运行时解决方案替换它。

bUseXGEController (Boolean)

XGE控制器工作程序和模块是否应包含在引擎构建中。这些是使用XGE拦截接口的分布式着色器编译所必需的内容。

bUseBackwardsCompatibleDefaults (Boolean)

是否针对该模块使用向后兼容默认值。默认情况下,引擎模块始终使用最新的默认设置,但是对于项目模块来说,却并非如此(为支持更加简单的迁移路径)。

bIWYU (Boolean)

默认情况下,为该目标中的模块启用"包括你使用的内容"。将该项目中所有模块的默认PCH模式更改为PCHUsageModule.UseExplicitOrSharedPCHs。

bEnforceIWYU (Boolean)

强制实施"包括你使用的内容"规则;如果使用了Engine.h、UnrealEd.h等单块头文件则发出警告,并首先确保源文件中包含它们相应的头文件。

bHasExports (Boolean)

最终可执行文件是否应导出符号。

bPrecompile (Boolean)

为所有引擎模块生成静态库,作为该目标的中间代码。

bUsePrecompiled (Boolean)

在该目标中使用所有引擎模块的现有静态库。

bEnableOSX109Support (Boolean)

编译时是否应包括OS X 10.9 Mavericks支持如果需要让某些工具与该版本的OS X兼容,则使用它。

bIsBuildingConsoleApplication (Boolean)

如果正在构建的是游戏机应用程序则为True。

bDisableSymbolCache (Boolean)

如果为部分平台缓存的调试符号不应被创建则为True。

bUseUnityBuild (Boolean)

是否将C++代码整合为更大文件以提高编译速度。

bForceUnityBuild (Boolean)

是否强制将C++源文件组合为更大文件以提高编译速度。

bUseAdaptiveUnityBuild (Boolean)

使用启发法来确定当前正在迭代的文件并从统一blob中排除这些文件,从而提高增量编译速度。当前实现使用只读标志来区分工作集,并假设如果正在修改文件,则文件状态为可由源代码控制系统写入。Perforce确实如此,Git则不然。

bAdaptiveUnityDisablesOptimizations (Boolean)

针对自适应非统一工作集中的文件,禁用优化。

bAdaptiveUnityDisablesPCH (Boolean)

针对自适应非统一工作集中的文件,禁用强制包含PCH。

MinGameModuleSourceFilesForUnityBuild (Int32)

在针对游戏模块激活统一构建前,该模块中可以包含的源文件数量。该属性让小型游戏模块中的单一文件能够更快速地进行迭代式编译,但代价是整个重新构建时间会延长。该设置可以用模块Build.cs文件中的bFasterWithoutUnity选项覆盖。

bShadowVariableErrors (Boolean)

在支持的平台上,强制将阴影变量警告视为错误。

bUndefinedIdentifierErrors (Boolean)

强制将条件表达式中使用未定义标识视为错误。

bUseFastMonoCalls (Boolean)

新的单块图形驱动程序拥有可选的"快速调用",可以取代多种D3d函数

bUseFastSemanticsRenderContexts (Boolean)

新的Xbox驱动程序支持"快速语义"环境类型。对于即时环境和延迟环境为启用状态。如果你看到Xbox RHI中出现渲染问题和/或崩溃,请尝试将其禁用。

NumIncludedBytesPerUnityCPP (Int32)

要包含在一个统一的C++文件中的大概C++代码字节数。

bStressTestUnity (Boolean)

是否通过将一个统一文件中的所有C++文件包含在一个项目中来对C++统一构建健壮性进行压力测试。

bForceDebugInfo (Boolean)

是否强制生成调试信息。

bDisableDebugInfo (Boolean)

是否全局禁用调试信息生成;请参阅DebugInfoHeuristics.cs以了解每种配置和每个平台的选项。

bDisableDebugInfoForGeneratedCode (Boolean)

是否针对生成的文件禁用调试信息生成。这样会改善包含大量生成粘合代码的模块的链接时间。

bOmitPCDebugInfoInDevelopment (Boolean)

是否在PC上禁用开发构建中的调试信息(以便提高开发者迭代速度,因为禁用调试信息后链接速度极快)。

bUsePDBFiles (Boolean)

是否应将PDB文件用于Visual C++构建。

bUsePCHFiles (Boolean)

是否应使用PCH文件。

MinFilesUsingPrecompiledHeader (Int32)

使用预编译头的文件数量至少应达到该属性指定的数量后才会创建和使用预编译头。

bForcePrecompiledHeaderForGameModules (Boolean)

启用后,即使游戏模块中只有少量源文件,也会为该模块生成预编译头。这样会极大改善对项目中的少量文件进行迭代式更改的编译时间,但代价是小型游戏项目的整个重新构建时间会延长。该设置可以通过在模块的Build.cs文件中设置MinFilesUsingPrecompiledHeaderOverride进行覆盖。

bUseIncrementalLinking (Boolean)

是否使用增量链接。如果是进行小幅更改,增量链接可以产生更快的迭代速度。目前默认情况下为禁用状态,因为它在某些计算机上容易引起错误(PDB相关编译错误)。

bAllowLTCG (Boolean)

是否允许使用链接时间代码生成(LTCG)。

bPGOProfile (Boolean)

是否在该构建中启用Profile Guided Optimization(PGO)指令。

bPGOOptimize (Boolean)

是否通过Profile Guided Optimization(PGO)优化该构建。

bAllowASLRInShipping (Boolean)

如果受支持,是否允许使用ASLR(地址空间布局随机化)。仅适用于发行构建。

bSupportEditAndContinue (Boolean)

是否支持编辑和继续。仅适用于32位编译模式下的Microsoft编译器。

bOmitFramePointers (Boolean)

是否省略帧指针。在某些情况下禁用十分有用,例如PC上的内存分析。

bStripSymbolsOnIOS (Boolean)

是否删除iOS符号(bGeneratedSYMFile隐含)。

bUseMallocProfiler (Boolean)

如果为true,则在构建中启用内存分析(定义USE_MALLOC_PROFILER=1并强制bOmitFramePointers=false)。

bUseSharedPCHs (Boolean)

启用"共享PCH",此功能尝试在UBT检测到包含某些PCH头文件的模块之间共享这些PCH文件,从而极大提高编译速度。

bUseShippingPhysXLibraries (Boolean)

如果开发和发布构建应使用PhysX/APEX的发布配置,则为true。

bUseCheckedPhysXLibraries (Boolean)

如果开发和发布构建应使用PhysX/APEX的已检查配置,则为true。如果bUseShippingPhysXLibraries为true,则忽略该属性。

bCheckLicenseViolations (Boolean)

告知UBT检查当前正在构建的模块是否违反了EULA。

bBreakBuildOnLicenseViolation (Boolean)

告知UBT如果当前正在构建的模块违反了EULA,则中断构建。

bUseFastPDBLinking (Nullable<Boolean>)

使用/DEBUG构建时是否使用:FASTLINK选项在Windows上创建本地PDB。速度虽快,但目前似乎不能顺利地找到调试程序中的符号。

bCreateMapFile (Boolean)

作为构建的一部分输出映射文件。

BundleVersion (String)

Mac应用程序的捆绑包版本。

bDeployAfterCompile (Boolean)

编译后是否在需要部署的平台上部署可执行文件。

bCreateStubIPA (Boolean)

如果为true,则在编译结束时生成stub IPA(以减少有效IPA的文件数量)。

bCopyAppBundleBackToDevice (Boolean)

如果为true,则在编译结束时生成stub IPA(以减少有效IPA的文件数量)。

bAllowRemotelyCompiledPCHs (Boolean)

启用时,允许XGE在远程计算机上编译预编译的头文件。否则,PCH将始终在本地生成。

bCheckSystemHeadersForModification (Boolean)

在确定过时操作时,是否应检查系统路径中的头有无修改。

bDisableLinking (Boolean)

是否禁用该目标的链接。

bFormalBuild (Boolean)

指示其为正式构建版本,将用于分发。Build.version设置有changelist时,该标记将自动设置为true。当前绑定到该标记的唯一行为是,针对每个二进制文件分别编译默认资源文件,以便OriginalFilename字段能够正确设置。默认情况下,我们仅编译资源一次,以减少构建时间。

bFlushBuildDirOnRemoteMac (Boolean)

在构建前,是否清理远程Mac上的Builds目录。

bPrintToolChainTimingInfo (Boolean)

是否从编译器和链接器写入详细的时间信息。

bHideSymbolsByDefault (Boolean)

是否在默认情况下在POSIX平台上隐藏符号

ToolChainName (String)

允许为该目标创建覆盖工具链。它必须与在UnrealBuildTool程序集中声明的类的名称匹配。

bAllowGeneratedIniWhenCooked (Boolean)

是否在转化的构建版本中加载生成的ini文件

bLegacyPublicIncludePaths (Boolean)

针对编译环境,将所有公共文件夹作为包含路径添加。

BuildVersion (String)

构建版本字符串

GlobalDefinitions (List<String>)

跨整个目标全局定义的宏。

ProjectDefinitions (List<String>)

跨项目中的所有宏定义的宏。

ExtraModuleNames (List<String>)

要编译到目标中的一组额外的模块。

BuildEnvironment (TargetBuildEnvironment)

为该目标指定构建环境。关于可用选项的更多信息,请参阅TargetBuildEnvironment。

PreBuildSteps (List<String>)

在主机平台shell的情境内,指定应在构建该目标之前执行的一系列步骤。执行之前,将会展开以下变量: $(EngineDir)、$(ProjectDir)、$(TargetName)、$(TargetPlatform), $(TargetConfiguration)、$(TargetType)、$(ProjectFile)。

PostBuildSteps (List<String>)

在主机平台shell的情境内,指定应在构建该目标之后执行的一系列步骤。执行之前,将会展开以下变量: $(EngineDir)、$(ProjectDir)、$(TargetName)、$(TargetPlatform), $(TargetConfiguration)、$(TargetType)、$(ProjectFile)。

AdditionalCompilerArguments (String)

要传递到编译器的额外参数

AdditionalLinkerArguments (String)

要传递到链接器的额外参数

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