Skip to content

Makefile 的文件格式 ​

概述 ​

Makefile文件由一系列规则(rules)构成。每条规则的形式如下。

makefile
<target> : <prerequisites>
[tab]	<commands>
  • 第一行冒号前面的部分,叫做"目标"(target),冒号后面的部分叫做"前置条件"(prerequisites)。
  • 第二行必须由一个 tab 键起首,后面跟着"命令"(commands)。
  • "目标"是必需的,不可省略;"前置条件"和"命令"都是可选的,但是两者之中必须至少存在一个。

每条规则就明确两件事:构建目标的前置条件是什么,以及如何构建。

目标(target) ​

  • 定义:目标通常是要生成的文件(如可执行文件、库文件),也可以是一个动作标签(如 clean)。
  • 作用:Make 根据目标及其依赖关系决定是否执行相关命令。
makefile
clean: 
	rm *.o

前置条件(prerequisites) ​

  • 定义:前置条件是生成目标所依赖的文件或其它目标。
  • 作用:如果前置条件中的任一文件比目标新,或目标不存在,Make 会执行相应命令。
makefile
result.txt: source.txt
    cp source.txt result.txt

构建 result.txt 的前置条件是 source.txt,如果当前目录中,source.txt 已经存在,那么 make result.txt 可以正常运行。

命令(Command) ​

  • 定义:命令是 Make 在生成目标时执行的 shell 命令。
  • 格式:每行命令必须以制表符(Tab)开头。
makefile
hello: hello.c
	gcc -o hello hello.c
  • 目标:hello
  • 前置条件:hello.c
  • 命令:gcc -o hello hello.c