语法
target ... : prerequisites ...command
...
target:可以是一个object file(目标文件),也可以是一个执行文件,还可以是一个标签(label)。
prerequisites:要生成那个target所需要的文件或是目标。
command:是make需要执行的命令(任意的shell命令),且前面须以Tab键开始。
注释
以#号开头,一直延续到这一行结束。
变量
makefile的变量也就是一个字符串,可理解成 C语言中的宏。如:obj=main.o open.o
引用宏的方法为:$( obj)
自动推导
GNU的make很强大,它可以自动推导文件以及文件依赖关系后面的命令,于是我们就没必要去在每一个[.o]文件后都写上类似的命令,因为,我们的make会自动识别,并自己推导命令。只要make看到一个[.o]文件,它就会自动的把[.c]文件加在依赖关系中,如果make找到一个whatever.o,那么whatever.c,就会是whatever.o的依赖文件。并且 cc -c whatever.c 也会被推导出来,于是,我们的makefile再也不用写得这么复杂。
例子
obj=main.o open.omyapp:$(obj)
gcc $(obj) -o myapp
main.o:main.c
gcc –c main.c
open.o:open.c
gcc -c open.c
clean:
rm $(obj) open