第1章
Makefile入门
什么是Makefile · 为什么需要 · 核心思想(依赖与目标) · 第一个示例
概念初识
第2章
Makefile规则详解
规则格式 · 目标/依赖/命令 · 伪目标 .PHONY
规则核心
第3章
Makefile变量
定义与使用 · 自动变量 $@ $^ $< · 赋值方式 = := ?= +=
变量赋值
第4章
Makefile模式匹配
%通配符 · 模式规则 · 静态模式规则
模式%
第5章
Makefile函数
字符串处理 · 文件名函数 · 条件判断函数 if/and/or
函数字符串
第6章
Makefile条件判断
ifeq/ifneq/ifdef/ifndef · 嵌套条件
条件分支
第7章
Makefile文件包含
include · -include与sinclude · 搜索路径
包含模块
第8章
多目标与多规则
一个规则多个目标 · 多个规则同一目标 · 双冒号规则
多目标双冒号
第9章
Makefile隐式规则
隐式规则概念 · 常用列表 · 变量 · 禁用
隐式自动
第10章
自动生成依赖
gcc -MM · .d文件生成与包含 · 自动更新
依赖.d
第11章
Makefile递归执行
$(MAKE) · 子目录构建 · 传递变量
递归子目录
第12章
命令行参数
目标指定 · 变量覆盖 · 选项 -j -B -n -C
参数选项
第13章
环境变量
读取环境变量 · 优先级 · export指令
环境export
第14章
二次展开 .SECONDEXPANSION
延迟展开 vs 立即展开 · 使用场景
展开高级
第15章
空命令与空目标
空命令写法 · 空目标文件用途
空命令技巧
第16章
多行变量与条件变量
define定义多行 · 条件变量赋值
多行define
第17章
路径处理 vpath / VPATH
vpath与VPATH · 搜索规则 · 避免冲突
路径搜索
第18章
作业管理 · 并行构建
-j并行 · 作业槽 · .NOTPARALLEL
并行性能
第19章
调试技巧
make --debug · info/warning/error · $(warning)
调试诊断
第20章
实战:单文件C程序
编译链接单个.c · clean规则
实战单文件
第21章
实战:多文件C程序
多.c编译 · 头文件依赖 · 增量编译
多文件增量
第22章
实战:静态库构建
ar命令 · 静态库生成/使用 · ranlib
静态库.a
第23章
实战:动态库构建
gcc -shared · .so链接 · LD_LIBRARY_PATH
动态库.so
第24章
实战:C++项目构建
g++编译 · 混合C/C++ · extern "C"
C++混合
第25章
实战:多目录项目
src/include/lib/build · 递归与非递归
多目录组织
第26章
实战:自动测试集成
test目标 · 运行单元测试 · 结果输出
测试自动化
第27章
实战:安装与卸载
install目标 · DESTDIR/prefix · uninstall
安装部署
第28章
实战:交叉编译
CC/AR/STRIP · sysroot · 交叉配置
交叉编译嵌入式
第29章
实战:大型项目组织
模块化 · include公共配置 · 版本号管理
模块版本
第30章
综合项目:从零构建C项目
目录设计 · Makefile分层 · 依赖/测试/安装/文档
综合完整