一个工程中的源文件不可胜数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件须要先编译,哪些文件须要后编译,哪些文件须要从新编译,甚至于进行更复杂的功能操做,由于 makefile就像一个shell脚本同样,其中也能够执行操做系统的命令。shell
Makefile规则spa
目标:依赖.................................操作系统
tab键 命令
可以执行的条件:a、目标不存在 b、依赖已更新
这就是最基本的规则。
标一般是要生成的文件的名称,一般是可执行文件或目标文件,也能够是一个执行动做的名称,好比clean。
依赖是用来产生目标的材料,一个目标常常有几个依赖。命令是生成目标时执行的动做,一个规则能够包含有几条命令,每一个命令占一行,注意每一个命令前面必须有一个tab字符。code
下面是一个简单的Makefile的编写。blog
hello:hello.c a.c
gcc -o hello hello.c a.c
也能够是下面的形式编译
hello:hello.o a.o gcc -o hello hello.o a.o hello.o:hello.c gcc -o hell.o -c hello.c a.o:a.c gcc -o a.o -c a.c
以上的规则与第一个同样,这里-c表示是只编译不连接。class
上面的规则还能够用通配符来表示gcc
hello:hello.o a.o gcc -o $@ $^ %.o:%.c gcc -o $@ -c $
还能够执行相应的动做file
hello:hello.o a.o gcc -o $@ $^ %.o:%.c gcc -o $@ -c $< clean: rm *.o hello
这是编写Makefike最简单的规则。gc