Unreal build Target Rules

官方文档: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.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容