Makefile 构建工具速查表
Makefile 是 C/C++ 项目最常用的构建工具,也广泛用于自动化任务。按语法分类整理常用写法。
返回 系统与运维变量与赋值 5
CC = gcc递归展开变量,引用时才展开
CC := gcc简单展开变量,定义时就展开
CC ?= gcc条件赋值,未定义时才赋值
CFLAGS += -Wall追加值到变量
$(CC)引用变量,推荐用圆括号
规则与目标 4
target: deps\n\trecipe基本规则:目标依赖和配方
.PHONY: clean声明伪目标,避免与文件名冲突
all: main默认目标(第一个非 . 开头的目标)
clean:\n\trm -f *.o main清理目标
模式规则 4
%.o: %.c\n\t$(CC) -c $< -o $@通配符规则,$< 第一个依赖,$@ 目标
$^所有依赖列表
$*模式规则中匹配的部分
$(@D) / $(@F)目标的目录名 / 文件名
条件与函数 5
ifeq ($(OS),Windows_NT)\n...\nendif条件判断
$(wildcard *.c)匹配文件列表
$(patsubst %.c,%.o,$(SRCS))模式替换
$(shell date)执行 shell 命令
$(foreach var,list,text)遍历列表
💡 提示
- Makefile 的配方行必须以 Tab 开头,不能用空格,这是最常见的错误。
- .PHONY 声明的目标不会检查同名文件是否存在,适合 clean、install 等操作。
- $@ 代表目标,$< 代表第一个依赖,$^ 代表所有依赖,这三个自动变量最常用。
- include other.mk 可以引入其他 Makefile,适合大型项目拆分。