Unreal4源码拆解-UnrealBuildTool功能流程解析-UnrealBuildTool主流程
前置工作
- 需要下载 Unreal4 的 C++ 源代码
- 源码目录在 UnrealEngine\Engine\Source\Programs\UnrealBuildTool
- 文件为UnrealBuildTool.cs
- UBT的主类所在位置,也是main函数的入口。
下面以一张图来概括UBT所做的工作
篇幅受限
黄色部分会单独写文章解析

全局配置参数详解
静态类 UnrealBuilTool 下面的变量,参与第一次参数拆解
变量 LogOutputLevel -Verbose/-VeryVerbose
- 定义 public LogEventType LogOutputLevel = LogEventType.Log;
- 对应参数:
- 碰到"-Verbose", 值变为"Verbose"
- 碰到"-VeryVerbose", 值变为"VeryVerbose"
- 含义: Log 输出等级的枚举,默认输出 log 以下的枚举
- 注意: 这个项其实是在决定是否输入超长LOG
enum LogEventType
{
Fatal = 1,
Error = 2,
Warning = 4,
Console = 8,
Log = 16,//默认输出Log以上的Log
Verbose = 32,//长LOG
VeryVerbose = 64//超长Log
}
变量 LogFileName -log=xxxx
- 定义 public FileReference LogFileName = null;
- 对应参数:
- 用法: -log=路径XXX文件名 -log=…/Hello.txt
- 含义: Log UBT 的 LOG 是否输出到一个 Log 文件中
变量 bLogTimestamps -Timestamps
- 定义 public bool bLogTimestamps = false;
- 对应参数:
- 含义: 是否连时间戳也打印出来
变量 bLogFromMsBuild -FromMsBuild
- 定义 public bool bLogFromMsBuild = false;
- 对应参数:
- 含义: 是否把 MSBuild 的 Log 也打印到 UBT 的 log 系统的输出中
变量 bWriteProgressMarkup -Progress
- 定义 public bool bWriteProgressMarkup = false;
- 对应参数:
- 含义: 会打印出当前执行的进程的完成进度
变量 bNoMutex -NoMutex
- 定义 public bool bNoMutex = false;
- 对应参数:
- 含义: 目前看到多个UBT或者多线程操作执行部分文件操作,决定是否需要加锁
变量 bWaitMutex -WaitMutex
- 定义 public bool bWaitMutex = false;
- 对应参数:
- 含义: 目前看到多个UBT或者多线程操作执行部分文件操作,是否需要等待其他锁操作执行完
变量 RemoteIni -RemoteIni=xxx
- 定义 public string RemoteIni = “”;
- 对应参数:
- 用法: -RemoteIni=路径XXX文件名 -RemoteIni=…/config.ini
- 含义: 路径XXX文件名赋值给变量,构建机等远程编译时候有用
变量 Mode -Clean -ProjectFiles…
- 定义 public string Mode = null;
- 对应参数:
- 碰到"-Clean", 把值替换为"Clean"
- 碰到"-ProjectFiles", 把值替换为"GenerateProjectFiles"
- 碰到"-ProjectFileFormat=", 把值替换为"GenerateProjectFiles"
- 碰到"-Makefile", 把值替换为"GenerateProjectFiles"
- 碰到"-CMakefile", 把值替换为"GenerateProjectFiles"
- 碰到"-QMakefile", 把值替换为"GenerateProjectFiles"
- 碰到"-KDevelopfile", 把值替换为"GenerateProjectFiles"
- 碰到"-CodeliteFiles", 把值替换为"GenerateProjectFiles"
- 碰到"-XCodeProjectFiles", 把值替换为"GenerateProjectFiles"
- 碰到"-EdditProjectFiles", 把值替换为"GenerateProjectFiles"
- 碰到"-VSCode", 把值替换为"GenerateProjectFiles"
- 碰到"-VSMac", 把值替换为"GenerateProjectFiles"
- 碰到"-CLion", 把值替换为"GenerateProjectFiles"
- 碰到"-Rider", 把值替换为"GenerateProjectFiles"
- 含义: 默认会通过反射找到BuildMode这个子ToolMode类,默认是这个。可以通过-Clean和其他参数改变