官方文档:Target
Unreal各个模块的build.cs文件都会有一个TargetRules的对象。
TargetRules类型在UnrealBuildTool的TargetRules.cs文件中定义。
TargetRules的属性虽然在cs文件里定义好了Default值,但是我们在哪里可以配置或更改这些属性呢?
Unreal有 5 种build Target:
enum TargetType
{
/// <summary>
/// Cooked monolithic game executable (GameName.exe). Also used for a game-agnostic engine executable (UE4Game.exe or RocketGame.exe)
/// </summary>
Game,
/// <summary>
/// Uncooked modular editor executable and DLLs (UE4Editor.exe, UE4Editor*.dll, GameName*.dll)
/// </summary>
Editor,
/// <summary>
/// Cooked monolithic game client executable (GameNameClient.exe, but no server code)
/// </summary>
Client,
/// <summary>
/// Cooked monolithic game server executable (GameNameServer.exe, but no client code)
/// </summary>
Server,
/// <summary>
/// Program (standalone program, e.g. ShaderCompileWorker.exe, can be modular or monolithic depending on the program)
/// </summary>
Program,
}
引擎层的Target.cs
Game类型的Target,则在UnrealGame.Target.cs中配置。
Editor类型的Target,则在UnrealEditor.Target.cs中配置。
不过,更改这些Target.cs,则需要重新编译Unreal引擎,比较费时。
应用层的Target.cs
每次用UE创建C++工程的时候,会生成<工程名>.Target.cs, <工程名>Editor.Target.cs
以上就算应用层的Target.cs,在应用层更改属性的好处是不用重编引擎。
应用层覆盖的是UnrealGame还是UnrealEditor的配置,取决于Type属性!
RequiresUniqueBuildEnvironment标记的属性
TargetRules.cs文件中配置了RequiresUniqueBuildEnvironment标记的属性,只能在上述Engine层的Target.cs文件中更改,例如属性: bUseChaos, bEnableMeshEditor.
注: RequiresUniqueBuildEnvironment标记的属性虽然也可以在应用层的Target.cs中赋值,但是只能赋和引擎层相同的值,否则编译会报错。
普通属性
没有RequiresUniqueBuildEnvironment标记的属性也可以在应用层的Target.cs文件中修改,例如:Type, bUsesSlate.