曲径通幽论坛

标题: = 和 := 符号的区别 [打印本页]

作者: beyes    时间: 2011-4-16 13:59
标题: = 和 := 符号的区别
= 和 := 都是变量赋值符号。但是它们有些区别:


"=" 如果右值包含另一个变量,那么可以在后面定义这个变量。


":=" 如果右值包含另一个变量,则只能引用已定义的变量。


下面看示例:
drivers-y  := drivers/ $(head-y)


head-y = header/


all:
    @echo $(drivers-y)

输出:
$ make
drivers/

drivers-y 的后面跟着一个 $(head-y) 变量,这个变量在 drivers-y 之前并未定义过,但是由于这里使用了 := 符号,所以在 drivers-y 的下一行再定义 head-y 已然无效。
那么将上面的 drivers-y 中的符号改成 = 符号,那么便可以看到区别:
drivers-y  = drivers/ $(head-y)


head-y = header/


all:
    @echo $(drivers-y)

输出:
[beyes@SLinux Makefile]$ make
drivers/ header/





欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2