Makefile 就像是一个Shell脚本一样,通过批量处理,来完成自动化编译
Makefile 基本规则
目标:依赖
(tab缩进)命令
一、下面是最简单的makefile文件
修改一个文件,所有的文件都需要重新编译
二、根据makefile的工作原理
- 自动检查依赖是否存在,不存在则向下搜索规重新编译或报错
- 存在则检查依赖是不是最新状态,不是则更新
但是此方法当依赖较多时比较麻烦
三、引入变量
普通变量
直接使用=进行赋值,使用$(变量名)引用
var=abc
var2=$(var)
自带变量
CC = gcc #arm-linux-gcc
CPPFLAGS : C预处理的选项 -I
CFLAGS: C编译器的选项 -Wall -g -c
LDFLAGS : 链接器选项 -L -l
自动变量
$@ 表示规则中的目标
$< 表示规则中的第一个条件
$^ 表示规则中所有条件
同时可以使用%作为通配符直接代表目标名和依赖名,但需注意,%代表一个或多个同时目标和依赖名必须一致
makefile函数
常用的两个
1. wildcard – 查找指定目录下的指定类型的文件
src=$(wildcard *.c) //找到当前目录下所有后缀为.c的文件,赋值给src
2. patsubst – 匹配替换
obj=$(patsubst %.c,%.o, $(src)) //把src变量里所有后缀为.c的文件替换成.o
makefile的清理工作
当程序编译完成后,文件夹中还存在很多编译过程中生成的预编译文件,最后一步就是清理这些文件