
《Make 命令教程》是阮一峰于 2015 年 2 月 20 日发布在个人网络日志上的开发者手册类文章。Make 是最常用的构建工具,诞生于 1977 年,主要用于 C 语言项目;实际上,任何只要某个文件有变化就需要重新构建的项目,都可以用 Make 构建。本文从简单的概念讲起,不需要任何基础,只要会使用命令行就能看懂,主要介绍 Make 命令的用法,参考资料包括 Isaac Schlueter 的《Makefile 文件教程》和《GNU Make 手册》。

Make 命令根据指定的 Shell 命令进行构建。其规则很简单:规定要构建哪个文件、它依赖哪些源文件,当那些文件有变动时,如何重新构建它。具体的构建规则写在 Makefile 文件中(也可写为 makefile,或用 -f / --file 参数指定其他文件名)。
Makefile 由一系列规则构成,每条规则形式如下:
<target> : <prerequisites>
[tab] <commands>
clean),可用 .PHONY 声明以避免与同名文件冲突;不指定目标时默认执行第一个目标。.RECIPEPREFIX 更改为其他字符);每行命令在独立 Shell 中执行,无继承关系。# 表示。@ 可关闭回声。*、?、[...]。% 进行类似正则的匹配,可一条规则构建同类型大量文件。= 自定义变量,调用时放在 $( ) 中;赋值符包括 =(运行时递归扩展)、:=(定义时扩展)、?=(空时才设值)、+=(追加)。$(CC) 指向编译器,$(MAKE) 指向 Make 工具。$@(当前目标)、$<(第一个前置条件)、$?(比目标更新的前置条件)、$^(所有前置条件)等。ifeq 判断、for 循环。$(function arguments),提供 shell 函数等内置函数用来执行命令。