Makefile Cheatsheet
Makefile cheatsheet: rules, variables, functions, auto-variables, templates
Makefile Cheatsheet is a free online Command Reference tool. Makefile cheatsheet: rules, variables, functions, auto-variables, templates Related terms: make · makefile · 构建 · 编译 · gcc · 自动化. Use it on this page without signing in.
21 scripts in total
最简单的规则
target(目标): 依赖文件,缩进一行(必须是 Tab)写命令。运行 make target 执行。
伪目标 .PHONY
clean、install 等目标不对应文件,声明为 .PHONY 避免与同名文件冲突,也防止 make 认为已是最新而跳过。
默认目标 all
不指定目标时 make 执行第一个目标;约定俗成用 all 作为总入口。
双冒号规则
同一目标可写多条双冒号规则,每条独立执行;普通单冒号规则同一目标只允许一条。
变量定义与引用
= 延迟展开;:= 立即展开;?= 未定义才赋值;+= 追加。引用用 $(VAR) 或 ${VAR}。
命令行覆盖变量
命令行传入的变量会覆盖 Makefile 内赋值;用 override 强制 Makefile 内值优先。
导出变量到子进程
export 将变量传给子 make 或 shell 命令;unexport 取消导出。
= 与 := 的区别
= 延迟展开(使用时才求值),:= 立即展开(赋值时求值)。递归变量会多次展开。
常用自动变量
$@ 目标、$< 第一个依赖、$^ 全部依赖、$? 比目标新的依赖、$* 去掉后缀的目标名。
$(@D) 与 $(@F) 目录/文件名
$(@D) 目标的目录部分,$(@F) 目标的文件名部分;同理 $(<D) $(<F) 对应依赖。
$* 与 $% 特殊变量
$* 模式规则中去掉后缀的骨干部分;$% 用于归档成员规则时取成员名。
wildcard 通配文件
$(wildcard pattern) 展开匹配的文件列表,常与 patsubst 配合收集源文件。
foreach 遍历
$(foreach var, list, text) 对列表逐项展开。常用于生成多目标。
filter / filter-out 筛选
filter 保留匹配模式的词,filter-out 剔除匹配模式的词,可用于分离不同源文件。
shell 函数执行命令
$(shell cmd) 在构建前执行 shell 命令并把输出作为变量值。注意:不要滥用,影响可移植性。
ifeq / else / endif 条件
make 内建条件判断:ifeq/ifneq/ifdef/ifndef,在解析时求值,可控制变量与目标。
多目标与隐式批量
同一规则可写多个目标;配合模式规则或 foreach 批量生成。
C 项目模板
经典 C 项目 Makefile:自动收集源文件、目录结构清晰、支持 clean。
Go 项目模板
Go 项目常用命令封装:构建、测试、lint、清理,支持交叉编译。
Node.js 项目模板
前端/Node 项目常用任务:安装依赖、构建、测试、发布。
Docker 编排模板
用 Makefile 封装 docker compose 常用操作,简化记忆。
使用说明
- 左侧选择分类(基础规则、变量、常用函数、自动变量、实战模板等)
- 在搜索框输入关键词查找写法
- 点击卡片查看完整示例
- 点击「复制」粘贴到自己的 Makefile 中使用
常见问题
- 红色标签是什么? 标有红色「高危」的写法(如 rm -rf 清理规则)可能误删文件,使用前请确认路径
- 和 CMake 什么关系? CMake 是生成构建系统的工具,Make 是执行构建的工具,二者常配合使用
- Tab 还是空格? Makefile 规则命令行必须使用 Tab 缩进,这是最常见的报错原因
More Command Reference
View allDocker Commands
Docker cheatsheet: containers, images, network, volumes
Git Commands
Git cheatsheet: branch, merge, stash, revert
Linux Commands
Linux ops commands: process, disk, memory, network
Database Commands
MySQL / PostgreSQL / Redis / MongoDB cheatsheet
Curl / HTTP
Curl commands: GET / POST / auth / upload / debug
Vim Commands
Vim cheatsheet: move, edit, search, replace, windows
Kubernetes Commands
kubectl cheatsheet: pods, deployments, services, debugging
Code Snippets
Common code snippets: Python / JS / Go utilities
FAQ about Makefile Cheatsheet
What can Makefile Cheatsheet do?
Makefile Cheatsheet is a Command Reference tool. Makefile cheatsheet: rules, variables, functions, auto-variables, templates You can finish the job on this page.
Who should use Makefile Cheatsheet?
Anyone handling make · makefile · 构建 · 编译 · gcc · 自动化 who does not want to install desktop software can use Makefile Cheatsheet in the browser.
Is Makefile Cheatsheet safe? Is my data uploaded?
This tool runs in your browser. We do not collect the content you enter into Makefile Cheatsheet just because you used it.
What similar tools exist?
Related tools in the same Command Reference group are listed at the bottom of this page.