makefile入门
0. 前言
makefile
工程管理文件,与make
命令结合,在linux上用于管理大规模工程。
以下记录简单使用make
的学习笔记。
1. makefile文件编写规则
makefile
文件也可命名为Makefile
文件。
makefile
文件一般格式为:
1 | 目标文件名: <依赖文件列表> |
如:
1 | hello1: hello1.c |
hello1
是要生成的文件,即目标文件。hello1.c
是生成目标文件的依赖文件,依赖文件可以有任意个。gcc -o hello1 -g hello1.c
是生成该文件要运行的shell
命令。可以有多条运行命令,若要换行,在上一条命令后加上换行符\
。
2. makefile运行规则
在命令行中输入:$ make
,运行makefile文件:
- make命令先会找到
makefile
中第一行的目标文件。如果目标文件已存在,或者依赖文件更新,那么就会执行该项中的命令。 - 如果依赖文件不存在,那
make
会做相应提示。 - 但是,如果依赖文件是另一项的目标文件,那
make
会找到该项,并重复上述步骤。
3. 示例
有一个完整的Makefile文件,内容如下:
1 | init.py: hello1 hello2 |
init.py
目标文件的依赖文件是 hello1
和 hello2
。同时,hello1
是另一项的目标文件,该项的依赖文件是hello1.c
;hello2
也是另一项的目标文件,依赖文件是hello2.c
。
命令行执行make
命令后:
1 | $ make |
显示执行了相应项的shell
命令。由于,hello1和hello2文件不存在,得先执行以这些文件为目标文件的,对应项的命令。等第一项的依赖文件都生成了,才会执行第一项的命令。
4. 执行特定指令
在该示例中,还有一项的目标文件为clean
。这并不是一个要生成的目标文件,而是一个清除hello1
和hello2
执行文件的指令,这是一个伪目标。
我们想执行这条指令时,命令行输入:$ make clean
即可。
其实,我们也可以通过 $ make hello1
来单独make
这一项。