Makefile是一个工程管理文件,通过Makefile的管理功能,我们能够很容易的对一个大的工程项目如uboot、linux进行编译链接,下面介绍一下Makefile的编写方法。
Makefile是由规则组成 ,规则有如下的三个要素:
1.目标(targets)
2.依赖(prerequisite)
3.命令(command)
如下是简单的Makefile:
main.o :main.c
gcc -c main.c
其中main.o为目标;main.c为依赖;gcc -c main.c 为命令。
事实上,如果依赖的文件比较多而且随时可以删减的时候,我们可以添加变量来改写此Makefile文件:
obj=hello.o func1.o func2.o
hello: $(obj)
gcc $(obj) -o hello
另外,在Makefile中还存在有系统默认的变量,如$^ 代表的是所有的依赖 $@代表的是目标 $<代表的是第一个依赖。
如:
hello: hello.o func1.o func2.o
gcc hello.o func1.o func2.o -o hello
就可以通过默认变量进行改写:
hello: hello.o func1.o func2.o
gcc $^ -o $@
还有注意的一点是,在Makefile文件中使用#来对文件进行注释;还可以在命令的前面增加@来取消回显。
最后,对于Makefile文件在默认的情况下,都是以Makefile为默认的文件名,如果想指定为其他的名字的话,就必须通过-f选项来指定makefile的名字。