1.什么是Makefile脚本:
Makefile脚本集合了程序的编译指令的文件,make是一个命令工具,当执行make命令时,它会自动读取Makefile中的编译指令并执行,会自动完成整个项目的自动化编译工作。
2.为什么需要Makefile脚本:
项目中如何有很多.c文件,它们的编译指令会有很多,需要的编译时间比较长,依赖关系非常复杂。
当项目中的.h文件被修改时,对应的.c文件需要重新编译,但是我们无法人为的分辨出哪些文件需要重新编译,只能全部重新编译一下,这项操作非常耗时。所以,一个良好Makefile可以给我们节约更多的时间来内卷。
3.使用Makefile脚本的优点
1.节约时间。
2.记录文件之间的依赖关系
3.自动化执行编译过程
4.Makefile的原理
Makefile脚本的原理就是基于文件最后修改时间,被依赖文件的最后修改时间晚于目标文件,该文件就需要重新编译。
hello.c > hello.o
gcc -c hello.c
hello.h > hello.o
gcc -c hello.c
下面以用户管理系统为例编写Makefile
在Makefile脚本中可以使用变量
变量名=value 定义变量并给变量赋值初值
$(变量名) 使用变量名,获取出变量的值。
CC=gcc //编译器
STD=-std=gnu99 //语法标准
FLAG=-Wall -Werror //检查标准(显示所有警告并将警告当做错误处理)
TARGE=manager //最终可执行文件的名字
OBJECT=main.o tools.o manager_user.o //所有的目标文件名
$(TARGE):$(OBJECT)
$(CC) $(OBJECT) -o $(TARGE) //使用gcc编译器将所有目标文件编译成可执行文件
main.o:%.o:%.c manager_user.h // %.o和%.c表示所有的.o和.c文件
$(CC) $(STD) $(FLAG) -c $<
tools.o:%.o:%.c tools.c tools.h
$(CC) $(STD) $(FLAG) -c $<
manager_user.o:%.o:%.c manager_user.c manager_user.h tools.h
$(CC) $(STD) $(FLAG) -c $<
clean: //通过make clean 指令,清除掉目标文件,头文件的编译结果,可执行文件,一般不会执行,需要手动执行
rm -rf $(OBJECT) $(TARGE)
rm -rf .h.gch
Makefile在面试中也经常询问,所以掌握Makefile的写法会让你的面试更加顺利。
更多推荐
Makefile编写——菜鸟杂谈
发布评论