makefile的作用?实现?
makefile 关系到整个工程的编译规则,一旦写好只要make命令就可实现整个工程的自动编译,当重新make时,只有发生改变的文件才会被重新编译,极大提高了软件开发效率。
makefiel的编写规则:
- 需要由make工具创建的目标体,通常是目标文件或可执行文件
- 要创建目标体所以来的文件
- 创建每个目标体时需要运行的命令,必须以制表符(tab键)开头
例: hello:main.o func1.o func2.o
gcc main.o func1.o func2.o -o hello
main.o:main.c
gcc -c main.c
func1.o:func1.c
gcc -c func1.c
func2.o:func2.c
gcc -c func2.c
.PHONY:clean
clean:
rm -f hello main.o func1.o func2.o
定义在makefile中的目标可能会有很多,但第一条规则中的目标将被确立为最终目标。
PHONY修饰的目标只有规则没有依赖,如上当输入命令clean时规则执行-强制删除hello main.o func1.o func2.o文件。
“变量”的使用:第一二行代码可替换为
obj = main.o func1.o func2.o
hello:$(obj)
gcc $(obj) -o hello
使用“变量”可简化makefile文件的修改与书写
makefiel中: $^ 代表所有依赖文件
$@代表目标
$<代表第一个依赖文件
makefile中:“#”字符后的内容视为注释
@取消回显