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这一项。