Makefile = 、:=、?=的区别

来源:互联网 发布:淘宝宝贝卖点词 编辑:程序博客网 时间:2024/06/07 21:19

= 相当于 c 语言中的 预编译的过程,在真正解释Makefile前会先将对应的=号左边的量替换成右边的量。


而:=则是跟 宏观的 =号相似,是简单赋值的运算符号。下面举个例子就可以清楚的知道它们之间有何不同。


cross = arm-linux-cc = $(cross) gcccross =

这里的cc会等于gcc,因为最后的cross是空白,所以在解释时候会将cross都替换成了空白,就跟预编译类似。 再看另外一个代码。


cross := arm-linux-cc = &(cross)gcccross:=


这里的cc便是arm-linux-gcc,cross此时就和变量的使用方法一致。

而?= 则是如果l-value没定义过则将r-value赋值给l-value

如 test=abc

test?=bcd

则最终test=abc


0 0