跳转至

Makefile#

1 基本格式#

targets : prerequisties
[tab键]command

- target:目标文件,可以是 OjectFile,也可以是执行文件,还可以是一个标签(Label),对于标签这种特性,在后续的“伪目标”章节中会有叙述。
- prerequisite:要生成那个 target 所需要的文件或是目标。
- command:是 make 需要执行的命令,

2 Makefile 规则#

  • make 会在当前目录下找到一个名字叫 Makefilemakefile 的文件
  • 如果找到,它会找文件中第一个目标文件(target),并把这个文件作为最终的目标文件
  • 如果 target 文件不存在,或是 target 文件依赖的 .o 文件(prerequities)的文件修改时间要比 target 这个文件新,就会执行后面所定义的命令 command 来生成 target 这个文件
  • 如果 target 依赖的 .o 文件(prerequisties)也存在,make 会在当前文件中找到 target 为 .o 文件的依赖性,如果找到,再根据那个规则生成 .o 文件

3 伪目标#

"伪目标" 不是一个文件,只是一个标签。我们要显示地指明这个 "目标" 才能让其生效

"伪目标" 的取名不能和文件名重名,否则不会执行命令

为了避免和文件重名的这种情况,我们可以使用一个特殊的标记 .PHONY 来显示地指明一个目标是“伪目标”,向 make 说明,不管是否有这个文件,这个目标就是 "伪目标"

.PHONY : clean

只要有这个声明,不管是否有“clean”文件,要运行 "clean" 这个目标,只有"make clean" 这个命令