makefile中":=","=","?=","+="

时间:2022-02-19 19:29:53

= 无关位置的等于,值永远等于最后的值

比如:

 x =a 

 y =$(x) 

 x =b

那么y的值永远等于最后的值,等于 b ,而不是a            

:= 有关位置的等于,值取决于当时位置的值

比如:

 x :=a  

 y :=$(x) 

 x :=b

那么y的值取决于当时位置的值,等于 a ,而不是b   

?= 是如果没有被赋值过就赋予等号后面的值
+= 是添加等号后面的值

$(x)

表示引用变量x,一般调用的是用:=复制的变量

$(PWD)

表示当前目录

%

通配符,比如有a.c,b.c,c.c,则%.c有可能是a.c,或者是b.c,或者是c.c

*

通配符,表示所有的意思,比如有a.c,b.c,c.c,则*.c就等于 a.c b.c c.c

$@

目标文件

$^

所有的依赖文件

$<

第一个依赖文件