Basic Makefile Tutorial
基本概念
核心: make使用文件的创建和修改时间来判断是否应该更新一个目标文件
一个基本的 Makefile 文件的基本书写格式为:
1 |
|
伪目标
常用于没有依赖的目标, 比如我们常用的 clean 等, 一个示例如下:
1 |
|
由于和前面的规则不同,所以执行 clean
这以目标时,需要使用命令: make clean. 有时候为了防止这种为目标出现一些意想不到的结果,可以对伪目标进行严格的声明,如下:
1 |
|
一些注意点如下:
- 可以使用
\
把一行语句拆成多行,便于浏览 - 多条语句可以用
&&
或者是;
连接
错误捕捉
忽略错误,继续执行后续命令,可以在需要忽略错误的命令前加上-
:
1 |
|
隐式规则
make
针对 C、C++、ASM、Fortran 等程序内置了一系列隐式规则, 所以类似于 xyz.o
这种规则可以不写,make 会自动创建如下的规则:
1 |
|
变量
定义: 变量定义用 变量名 = 值
或者 变量名 := 值
,通常变量名全大写。引用变量用 $(变量名)
,非常简单。
还有一些内置的变量, 如 CC, CFLAGS 等,但是我们仍然可以重定义:
1 |
|
模式替换
如果一条规则依赖的文件过多,那么就可以使用通配符的形式进行规则的编写. 比如下面的一个例子:
1 |
|
自动变量
一些常见的自动变量如下:
1 |
|
执行结果输出如下:
1 |
|
一些内置函数
make 内置的一些函数在必要的时候可以加大的简化我们的 makefile 文件编写难度:
- wildcard, 使用的是
*
- patsubst, 使用的是
%
- shell, 返回一个shell命令执行结果
Basic Makefile Tutorial
https://zongpingding.github.io/2024/08/25/Makefile_Tutorial/