(一)makefile 文件主要有以下五种组成部分:
1. 显式规则:显示规则说明了生成一个或多个目标文件的方法和步骤。这是在编写makefile 文件时明显指出的,包括要生成的文件、生成文件的依赖文件以及生成的命令等。
2. 隐式规则:由于make 工具有自动推导的功能,所以在编写makefile 文件的时候可以利用该规则,简略地书写makefile 。再由make 工具本身自动推到需要使用的规则。
3 变量的定义:make 工具支持变量的定义,这些变量往往都是字符串,因此makefile 中的变量更像是c 语言中的宏。当makefile 被执行时,其中的变量都会被展开到相应的引用位置上。
4 文件指示:其包括三个部分,一个是在一个makefile 种引用另一个makefile, 就像c 语言中的include 一样。另一个是指根据某些情况指定makefile 中的有效部分,就像c 语言中的预编译#if 一样。还有就是定义一个多行的命令。
5 注释:makefile 中支持行注释。用# 表示注释。
(二)使用基本规则
第一种形式:
targets:prerequisites
(tab 键 )command
第二种形式:
targets:prerequisites ;command
(tab 键 )command
其中targets 表示目标,目标有2 种,第一种在执行过程中产生的文件名,例如.o 文件或者可执行文件。第二种是某个动作的名称,在执行过程中没有实际的文件与之对应。这种情况成为PHONY 目标,该目标和C 语言中的标号很像,只执行命令并不产生文件。
Command 表示命令。
例如:
edit: main.o common.o
gcc –o edit main.o common.o
main.o: main.c main.h
gcc –c main.c
common.o: common.c common.h
gcc –c common.c
clean:
rm edit main.o common.o