素材阁

Makefile 速查

共 43 条常用 Makefile 写法,覆盖规则与基本语法、变量与赋值、常用函数、条件与命令行选项四组场景, 逐条给出写法与说明。支持搜索与分类筛选,点击写法即可复制。

规则与基本语法

Make 的一行必须用 Tab 缩进作为命令行,不能用空格。

写法说明
目标依赖:deps 更新则执行下方命令
命令行,行首必须是 Tab 键
声明伪目标,避免与同名文件冲突
默认目标(文件中第一个目标)
模式规则,通配匹配
自动变量:当前目标名
自动变量:第一个依赖
自动变量:所有依赖(去重)
自动变量:模式匹配的主干部分
执行命令但不回显该行
忽略该命令的失败
命令前加减号同样忽略错误

变量与赋值

写法说明
递归展开赋值(使用时才求值)
立即展开赋值(定义时求值)
未定义时才赋默认值
追加内容
引用变量
引用变量的等价写法
执行 shell 命令并取输出
通配展开为文件列表
模式替换

常用函数

写法说明
字符串替换
去掉首尾及多余空白
查找子串,命中返回 find
保留匹配的模式
排除匹配的模式
排序并去重
取第 n 个词(从 1 开始)
取目录部分
取文件名部分
对列表逐项展开
条件函数

条件与命令行选项

写法说明
相等判断,成对 endif 结尾
不等判断
变量是否已定义
引入其它 Makefile 片段
导出变量给子进程
执行指定目标
并行执行,最多 4 个任务
只打印将要执行的命令,不真正执行
无条件重建所有目标
出错也继续执行其他目标
命令行覆盖变量

使用说明

Makefile 的变量语法、自动变量和模式规则细节多,写构建脚本时经常要回头查。本速查把目标依赖、变量、自动变量、函数与命令行参数分组列出,方便对照。

  1. 搜索语法或关键字(如 变量、自动变量、模式规则、伪目标)。
  2. 按分组查看基础语法、变量、规则与函数等。
  3. 点击复制即可取走可用的 Makefile 片段。

常见问题

= 和 := 赋值有什么区别?
= 是延迟展开(递归变量),使用时才求值;:= 是立即展开,赋值时即确定值。
.PHONY 有什么用?
声明伪目标,告诉 make 这些目标不对应真实文件,避免因同名文件存在而跳过执行。

延伸阅读

相关工具