首页
›
编程基础与工程化
›
010-工程编译
›
《项目重构中的编译技巧》
VIP20
本课程属于:010-工程编译
编程基础与工程化 · 共 20 门相关课程,组合学习更完整。
查看所属VIP全部课程 →
← 返回所属目录
咨询 / 购买
项目重构中的编译技巧
📚 共计 30 章节
01
重构概述
什么是项目重构?为什么需要重构?重构与重写的区别。
概念
基础
02
编译基础回顾
编译器工作流程:词法分析、语法分析、语义分析、中间代码生成、优化、目标代码生成。
编译原理
核心
03
构建系统选型
Make、CMake、Bazel、Gradle等构建工具的对比与选择。
工具
选型
04
增量编译原理
如何利用文件时间戳和依赖关系实现增量编译,减少重构后的全量编译时间。
增量
性能
05
头文件依赖优化
减少不必要的#include,使用前置声明,打破循环依赖,降低编译耦合。
依赖
解耦
06
模块化拆分策略
如何将单体项目拆分为多个模块/库,实现并行编译和独立测试。
模块
架构
07
预编译头文件 (PCH)
PCH的原理、使用场景、在大型项目中的配置与注意事项。
PCH
加速
08
统一构建缓存
使用ccache/sccache等工具缓存编译结果,加速重复编译。
缓存
ccache
09
分布式编译
Distcc、Icecream等分布式编译系统的搭建与使用。
分布式
并行
10
链接优化
链接器工作原理、减少符号表大小、使用LTO(链接时优化)提升性能。
链接
LTO
11
编译选项调优
-O0到-O3的选择、-g调试信息控制、-Wall -Werror等警告管理。
优化
GCC
12
静态分析集成
在编译过程中集成Clang-Tidy、Cppcheck等静态分析工具,提前发现代码问题。
静态分析
质量
13
代码生成与代码生成器
使用模板、宏、代码生成脚本减少重复代码,降低编译负担。
生成
元编程
14
条件编译与平台适配
使用#ifdef、#ifndef、CMake选项等管理多平台代码,避免编译冲突。
跨平台
预编译
15
编译时间度量
如何测量编译时间(time命令、ninja -t graph、Clang编译时间报告),定位瓶颈。
度量
性能分析
16
并行编译策略
Make -j、Ninja并行度设置、合理分配CPU核心资源。
并行
Ninja
17
依赖管理工具
vcpkg、Conan、Bazel外部依赖管理,减少手动管理第三方库的编译时间。
依赖
包管理
18
编译防火墙
使用接口类、Pimpl惯用法(指向实现的指针)隔离实现变更对头文件的影响。
Pimpl
隔离
19
模板实例化控制
显式实例化、extern template关键字,减少模板重复实例化带来的编译开销。
模板
实例化
20
编译时反射与元编程
利用constexpr、模板元编程在编译期完成计算,减少运行时负担。
元编程
constexpr
21
构建脚本重构
清理冗余的Makefile/CMakeLists.txt,统一构建规则,提升可维护性。
脚本
CMake
22
持续集成中的编译优化
CI流水线中如何利用缓存、增量编译、分布式编译加速构建。
CI
DevOps
23
编译错误信息解读
如何快速定位编译错误,减少调试时间,提升重构效率。
调试
错误
24
链接错误排查
undefined reference、multiple definition等常见链接错误的成因与解决。
链接
错误
25
ABI兼容性管理
重构时如何保持二进制接口兼容,避免重新编译所有依赖。
ABI
兼容
26
编译时断言与静态检查
static_assert、SFINAE、Concept(C++20)在重构中的应用。
断言
Concept
27
代码格式化与编译
集成clang-format、clang-tidy到编译流程,保持代码风格一致。
格式化
风格
28
编译日志分析
解析编译日志,识别重复编译、冗余依赖、慢速编译单元。
日志
分析
29
重构中的测试与编译
如何编写测试用例并确保重构不破坏编译,使用编译时测试框架。
测试
CI
30
综合案例:大型C++项目重构
一个大型C++项目重构中的编译优化实战,从分析到实施的全流程。
实战
案例
所属VIP或分类
同VIP:Qt界面布局与编译优化实战
同VIP:Qt项目工程化编译实战
同VIP:从编译到性能优化进阶开发与工程实践