Makefile#
- GNU Make 官方网站:https://www.gnu.org/software/make/
- GNU Make 官方文档下载地址:https://www.gnu.org/software/make/manual/
- Makefile Tutorial:https://makefiletutorial.com/
1 基本格式#
targets : prerequisties
[tab键]command
- target:目标文件,可以是 OjectFile,也可以是执行文件,还可以是一个标签(Label),对于标签这种特性,在后续的“伪目标”章节中会有叙述。
- prerequisite:要生成那个 target 所需要的文件或是目标。
- command:是 make 需要执行的命令,
2 Makefile 规则#
- make 会在当前目录下找到一个名字叫
Makefile
或makefile
的文件 - 如果找到,它会找文件中第一个目标文件(target),并把这个文件作为最终的目标文件
- 如果 target 文件不存在,或是 target 文件依赖的 .o 文件(prerequities)的文件修改时间要比 target 这个文件新,就会执行后面所定义的命令 command 来生成 target 这个文件
- 如果 target 依赖的 .o 文件(prerequisties)也存在,make 会在当前文件中找到 target 为 .o 文件的依赖性,如果找到,再根据那个规则生成 .o 文件
3 伪目标#
"伪目标" 不是一个文件,只是一个标签。我们要显示地指明这个 "目标" 才能让其生效
"伪目标" 的取名不能和文件名重名,否则不会执行命令
为了避免和文件重名的这种情况,我们可以使用一个特殊的标记 .PHONY
来显示地指明一个目标是“伪目标”,向 make 说明,不管是否有这个文件,这个目标就是 "伪目标"
.PHONY : clean
只要有这个声明,不管是否有“clean”文件,要运行 "clean" 这个目标,只有"make clean" 这个命令