|
|
发表于 2006-2-19 10:46:09
|
显示全部楼层
我来说两句,
= 是 recursively 赋值,
:= 是 simply 赋值。
举个 = 的例子:
foo = $(bar)
bar = $(ugh)
ugh = Huh?
foo 的值是 ‘Huh?’.
如果把上面例子的 = 换成 :=, foo 的值则变成了 ‘空’,因为在执行第一句时 bar 还没有定义,后面的两句话就跟 foo 没关系了。
(这个地方我没解释清楚,大家慢慢分析例子吧。)
注意下面的例子:
假设 CFLAGS 已经有了定义,然后我们要追加一个选项,如果写成:
CFLAGS = $(CFLAGS) -g
是错的,这是一个 recursive 死循环,最终堆栈溢出。
正确的写法应该是:
CFLAGS := $(CFLAGS) -g
我只知道这么多了,呵呵。 |
|