一、makefile是什么?
Makefile是一个描述文件,用于自动化构建程序的过程。它指定了如何从源代码文件生成可执行文件或库文件等目标文件。Makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,以及在什么情况下需要重新编译。
二、使用方法
命名:makefile或Makefile 才可以 使用make 命令
1 个规则:
目标:依赖条件
(一个tab缩进)命令
1. 目标的时间必须晚于依赖条件的时间,否则,更新目标
2. 依赖条件如果不存在,找寻新的规则去产生依赖条件。
ALL:指定 makefile 的终极目标。(否则把第一个规则的目标当做总目标)
2个函数:
$的作用: $(name) 取name的值 在脚本中变量的值就是字符串
src = $(wildcard ./*.c): 匹配当前工作目录下的所有.c 文件。将文件名组成列表,赋值给变量 src。 src = add.c sub.c div1.c
obj = $(patsubst %.c, %.o, $(src)): 将参数3中,包含参数1的部分,替换为参数2。 obj = add.o sub.o div1.o
clean: (没有依赖)
-rm -rf $(obj) a.out “-”:作用是,删除不存在文件时,不报错。顺序执行结束。
make clean -n 测试但不执行
3 个自动变量:
$@: 在规则的命令中,表示规则中的目标。
$^: 在规则的命令中,表示所有依赖条件。
$<: 在规则的命令中,表示第一个依赖条件。如果将该变量应用在模式规则中,它可将依赖条件列表中的依赖依次取出,套用模式规则。
模式规则:
%.o:%.c
gcc -c $< -o %@
静态模式规则:
$(obj):%.o:%.c
gcc -c $< -o %@
伪目标:
.PHONY: clean ALL
参数:
-n:模拟执行make、make clean 命令。
-f:指定文件执行 make 命令。 xxxx.mk
总结
总的来说,Makefile是一个自动化管理工具,用于控制软件的构建过程。它可以自动化编译和管理复杂的工程,并且通过指定一系列规则来确保正确的构建过程。