1. 对于以下代码,run ”make“ 会输出什么呢?
    e := f
    f = $(e) g
    e := i
    all:
            @echo $(a)
            @echo $f
    chenjian@ubuntu8:~$ make
    i g
  2. 如果修改成这样,那又会输出什么呢?
    e := f
    f  := $(e) g
    e := i
    all:
            @echo $(a)
            @echo $f
  3. chenjian@ubuntu8:~$ make
    f g

上述两段代码的唯一区别在于变量f的定义,第一种f用“=”,第二种用的是“:=

对于用“:=”定义的变量,它的值在执行至它定义时,就被解释了,比如2所示;而对于用“=”定义的变量,它的值要一直到引用它时,才会被解释,比如1所示

Advertisements