UBT是如何处理Target.cs和Build.cs-Unreal4源码拆解-UnrealBuildTool功能流程解析
专栏链接
知乎专栏:UBT源码解析
功能漫谈
我们项目和引擎里面的每个模块都有build.cs,我们的项目本身有Target.cs,UE4是如何处理这两种文件呢?
- UBT会把两种文件编译到DLL里面。
- 不管是项目还是引擎,DLL都在
Intermediate\Build\BuildRules
在内存里面是如何组织的呢?
- 对每一个Build.cs,UBT会在内存中创建一个ModuleRulesContext实例保存相关信息
- 之后会创建一个RulesAssembly实例,根据Target.cs和Build.cs编译出对应的DLL
- RulesAssembly实例中
- 保存ModuleRulesContext
- 对应的Target.cs和Build.cs文件本身
- 编译出来的DLL的引用
- 以及一些其他信息。。。
什么是Rule
其实我们看枚举就知道Rule在UE4中有3种
public enum RulesFileType
{
/// <summary>
/// .build.cs files
/// </summary>
Module,
/// <summary>
/// .target.cs files
/// </summary>
Target,
/// <summary>
/// .automation.csproj files
/// </summary>
AutomationModule
}
什么是Assembly
一个DLL或者一个程序
实例展示
UE4引擎分所有的build.cs和Target.cs会编译为2个DLL
UE4Rules.dll的源文件来源:插件和模块