您的位置:首页 > 其它

Makefile = 、:=、?=的区别

2016-01-03 00:28 239 查看
= 相当于 c 语言中的 预编译的过程,在真正解释Makefile前会先将对应的=号左边的量替换成右边的量。

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

cross = arm-linux-

cc = $(cross) gcc

cross =

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

cross := arm-linux-

cc = &(cross)gcc

cross:=

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

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

如 test=abc

test?=bcd

则最终test=abc
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: