Makefile的简单使用
- 原文链接https://tutorial.linux.doc.embedfire.com
- 学习野火电子linux的笔记!
Makefile相当于一个项目管理者,连接着项目和底层机制
makefile带来的好处就是——“自动化编译,还能对没有修改的文件不进行编译,提升了编译的效率
基础语法
基本的格式
目标:依赖
命令
目标:依赖
命令
…
伪目标
.PHONY
只要我们不期待生成目标文件,就应该把它定义成伪目标
只要生成了伪目标,无论文件夹下存不存在目标文件,都将执行命令语句
变量
引用变量时需要在变量前面加$
CC=gcc
main:main.c
$(CC) main.c -o main
赋值
- ”=“ :延时赋值,取这个变量最后的赋值
- “:=”直接赋值,变量的值在定义时已经确定了
- “?=”空赋值,当变量为空时才进行赋值
- “+=”追加赋值,可以在变量后面添加新的内容
分支判断
ifeq(arg1, arg2)
分支1
else
分支2
endif
判断arg1和arg2是否相等
自动化变量
“$@” 匹配目标文件
“$<” 依赖集合中的第一个文件
“$^” 所有依赖文件
模式规则
%:匹配任意多个非空字符,相当于shell中的*
例子:
%.o:%.c
gcc -o $@ $<
函数
函数的使用方法
#这两种使用方法都可行
$(函数名 参数)
${函数名 参数}
常用函数
notdir 用于去除文件路径中的目录表部分
wildcard 用于获取文件列表,并使用空格分隔开
如:$(wildcard 匹配规则)
patsubst 模式字符串替换
如:$(patsubst 匹配规则, 替换规则, 输入的字符串)