第1章
重构之始:什么是大型项目重构?
重构与重写的区别,重构的收益与风险。
重构基础风险分析
第2章
编译策略概览
大型项目编译的痛点(编译慢、依赖乱、环境不一致),核心目标。
痛点目标
第3章
模块化拆分
单体仓库 → 独立编译模块,高内聚低耦合原则。
模块化拆分原则
第4章
依赖管理
依赖关系梳理,循环依赖检测与消除,依赖树可视化。
依赖循环检测
第5章
构建系统选型
Make、CMake、Bazel、Gradle 对比与选型策略。
构建工具选型
第6章
增量编译
增量编译原理,利用构建工具实现增量,避免全量编译。
增量效率
第7章
分布式编译
主从架构,distcc/ccache/Incredibuild,网络延迟优化。
分布式加速
第8章
缓存策略
ccache/sccache,命中率优化,缓存失效策略。
缓存ccache
第9章
预编译头文件
PCH原理与使用,优缺点,大型项目实践。
PCH预编译
第10章
统一构建环境
Docker化编译环境,环境一致性,CI/CD管理。
Docker环境
第11章
编译参数优化
-O2/-O3/-Os选择,LTO,Profile Guided Optimization。
优化LTO
第12章
代码生成优化
模板实例化控制,减少代码膨胀,显式/隐式实例化。
模板膨胀
第13章
头文件优化
减少依赖,前向声明,Pimpl惯用法,包含顺序规范。
头文件Pimpl
第14章
并行编译
Make -j参数,并行度与资源平衡,避免I/O瓶颈。
并行-j
第15章
链接优化
链接器原理,减少链接时间:增量/并行/lld。
链接lld
第16章
静态分析集成
Clang-Tidy/Coverity嵌入编译,门禁策略。
静态分析门禁
第17章
单元测试编译策略
测试/生产代码分离,Google Test/Catch2,并行测试。
单元测试并行
第18章
持续集成中的编译
CI流水线编译策略,PR门禁,定时全量编译。
CI门禁
第19章
编译产物管理
产物版本化,Artifactory/Nexus存储,签名校验。
产物存储
第20章
编译时间度量
监控、基准线、回归告警。
度量告警
第21章
多平台交叉编译
交叉工具链,Linux/Windows/macOS/ARM,条件编译。
交叉编译多平台
第22章
大型项目中的代码生成
Protobuf/gRPC/IDL集成,生成代码版本管理。
代码生成Protobuf
第23章
编译日志与调试
日志分析,错误分类定位,警告治理。
日志调试
第24章
第三方依赖管理
源码编译 vs 预编译,版本锁定,漏洞扫描。
第三方安全
第25章
编译门禁与质量门
通过率、警告数、编译时间、覆盖率门禁。
门禁质量
第26章
渐进式重构
不中断业务逐步重构,Feature Flag与编译策略结合。
渐进式Feature Flag
第27章
重构中的编译兼容性
API/ABI兼容,Deprecation策略,版本号管理。
兼容性ABI
第28章
大规模代码库的编译策略
Google Bazel+远程执行,Facebook Buck,微软BuildXL。
大规模Bazel
第29章
编译策略的自动化与工具化
检查脚本,自动配置生成,策略即代码。
自动化工具化
第30章
总结与展望
云编译、AI辅助优化,建立编译文化。
未来编译文化