文章目录
- 构建的定义
- Make 是什么
- Make 使用
- Makefile 文件
- 规则
- Makefile 语法
 
构建的定义
- 代码变成可执行文件,叫做编译(compile)
- 先编译这个文件,然后编译那个文件(即编译的安排),叫做构建(build)
Make 是什么
Make 是最常用的构建工具,诞生于 1977 年,主要用于 C 语言项目。
实际上,任何只要某个文件有变化,就要重新构建的项目,都可以用 Make 构建。
Make 使用
在当前目录下创建一个 Makefile 文件,然后执行 make。
或执行 make target,其中的 target 是指 Makefile 文件中任一个目标。
Makefile 文件
make 只是一个根据指定的 Shell 命令进行构建的工具。
它的规则很简单,你规定要构建哪个文件、它依赖哪些源文件,当那些文件有变动时,如何重新构建它。
构建规则都写在 Makefile 文件里面,要学会如何 Make 命令,就必须学会如何编写 Makefile 文件。
规则
Makefile 文件由一系列规则(rules)构成。每条规则的形式如下:
<target> : <prerequisites>
[tab]  <commands>
- 一个目标(target)就构成一条规则。目标是文件名或者操作的名字(伪目标 phony target)
- 前置条件(prerequisites)通常是一组文件名,之间用空格分隔
- 命令(commands)表示如何更新目标文件,由一行或多行的 Shell 命令组成
前置条件(prerequisites)指定了目标(target)重新构建的判断标准:
- 只要有一个前置文件不存在
- 前置文件有过更新(前置文件的 last-modification 时间戳比目标的时间戳新)
Makefile 语法
- 注释:用井号(#)表示
- 回声(echoing):make 会先打印每条命令,然后执行,这个打印称为回声
- 通配符(wildcard):用来指定一组符合条件的文件名
- 模式匹配:对文件名进行类似正则运算的匹配
- 变量:用等号初始化并赋值自定义变量。调用时,变量需要放在 $()中
- 赋值符:提供四种赋值运算符(=:=?=+=)
- 内置变量(Implicit Variables):$(CC)指向当前使用的编译器
- 自动变量(Automatic Variables): $@指代当前目标,$^指代所有前置条件
- 判断和循环:Makefile 使用 Bash 语法,完成判断和循环
- 函数:使用格式如 $(function arguments)或${function arguments}
Make 命令零基础教程