版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fengfeng0328/article/details/88084710
make工程管理器也就是个“自动编译管理器”,这里的“自动”是指它能构根据文件时间戳自动发现更新过的文件而减少编译的工作量,同时,它通过读入Makefile文件的内容来执行大量的编译工作。
makefile编写规则:
1)Makefile的书写规则包含两个部分,一个是依赖关系,一个是生成目标的方法。
2)Makefile中只有一个最终目标,第一条规则中的第一个目标将被确立为最终的目标。
makefile格式如下:
target: dependency_files
< TAB >command /* 该行必须以tab键开头*/
举一个简单的例子:
david : kang.o yul.o
gcc kang.o yul.o -o david
kang.o : kang.c kang.h
gcc -Wall -O -g -c kang.c -o kang.o
yul.o : yul.c yul.h
gcc -Wall -O -g -c yul.c -o yul.o
make的运行规则:
make [目标] [-f makefile文件名] [-C 目录]
1)当“[-C 目录]”存在时,makefile目录为指定目录,否则为当前目录;
2)当“ [-f makefile文件名] ”省略时,在makefile目录下找makefile,如果不存在,再继续找Makefile;
3)当“[目标]”不存在时,从makefile的文件的第一个目标开始解析,否则从指定目标开始解析;
make的垃圾文件清理clean:
每个Makefile中都应该写一个清空目标文件(.o和执行文件)或过程文件的规则,这不仅便于重编译,也很利于保持文件的清洁。
1)一般的风格都是:
clean:
rm *.o
2)clean从来都是放在文件的最后,更为稳健的做法是:
.PHONY : clean //保证clean目标每次都能被重新生成
clean :
rm *.o
makfile环境变量注意事项:
1)make在启动时会自动读取系统当前已经定义了的环境变量,并且会创建与之具有相同名称和数值的变量
2)如果用户在makefile中定义了相同名称的变量,那么用户自定义变量将会覆盖同名的环境变量