伪编译
WARNING
此功能尚在计划中,尚未实现。
概念
伪编译不将编译任务转发给真正的编译器,而是由 catter 生成占位的 .o 文件。这样构建系统可以完成完整的运行流程(包括链接步骤),而无需实际编译。
带来的好处:
- 在极短时间内获得完整的 CDB。 不执行真正的编译工作,构建速度仅受构建系统调度能力的限制。
- 完整的链接器命令捕获。 由于占位目标文件存在于磁盘上,链接器调用可以正常进行并被拦截。
智能依赖分析
并非所有命令都可以伪造。代码生成器(如 LLVM TableGen)必须真正执行构建,因为它们生成的头文件是其他编译步骤的输入。
Catter 将通过依赖分析区分以下两类:
- 常规编译 -- 可以伪造。输出的
.o文件仅被链接器消费。 - 代码生成器 -- 必须真正构建。其输出(生成的头文件、源文件)是其他编译步骤所需的输入。
这实现了"最小构建":仅构建 CDB 生成和头文件产出所严格需要的部分,其余全部伪造。