Makefile 构建工具速查表

Makefile 是 C/C++ 项目最常用的构建工具,也广泛用于自动化任务。按语法分类整理常用写法。

系统与运维·共 18 条命令·最后更新 2026-07-19
返回 系统与运维

变量与赋值 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,适合大型项目拆分。