官方文檔: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創(chuàng)建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.