文章目录
一、变量基础
<variable_name>=<value>
<variable_name>:表示变量名,可以由任意字符,包括字母、数字和下划线,但第一个字符必须是字母,不能包含特殊符号,区分大小写
<value>:表示变量的值
#引用方式
$(<variable_name>)
示例↓
CFLAGS=-g -Wall
gcc $(CFLAGS) -c -o main.o main.c
变量也可以在运行过程中改变赋值
<variable_name>:=<value>
<variable_name>?=<value>
":="表示覆盖式赋值,即覆盖原先的变量
“?=“表示条件式赋值,即变量不存在时,该语句会为变量赋值
如果要使用”$“符号本身,则需要使用”$$”
"()“也可以用”{}"替换
二、变量替换
在Makefile中,可以使用变量值的替换来修改变量中保存的字符串
1、"$(var:a=b)"
将变量var中的所有以a结尾的字符串替换成以b结尾的对应字符串(结尾表示所有空格和结束符)
2、"$(var: a:=b)"
将变量var中的所有以a结尾的字符串替换成以b结尾的对应字符串,并将原始变量var中的内容替换成修改后的内容
3、"${var/a/b}"
将变量var中第一次出现的a字符串替换成b字符串
4、"${var//a/b}"
将变量var中所有a字符串替换成b字符串
foo:=a.o b.o c.o
#下两者等价 第二个使用了静态模式%
bar:=$(foo:.o=.c)
bar:=$(foo:%.o=%.c)
上述示例中,定义了一个"$(foo)“变量,再把把”$(foo)“中所有以”.o"字符结尾的字符串全部替换成".c