背景

在大型 UE(Unreal Engine)项目中,“模块/插件"是维持工程可维护性的基本手段。但随着工程规模增长,很容易出现循环依赖问题:

  • 模块 A 为了复用工具函数依赖模块 B
  • 模块 B 为了注册某些类型或访问某些资源又依赖模块 A
  • 在某些平台或配置下(尤其是 Editor 构建或 Link 阶段需要聚合大量 .so/.a 时),最终表现为 循环依赖

UBT(UnrealBuildTool)能检测到循环依赖,但输出的是 ActionGraph 层面的信息:大量 Action #xxxx,并提示"这些 action 互相成环”。对于实际排障来说,主要痛点在于: