makefie 之赋值

来源:互联网 发布:mac能玩守望先锋吗 编辑:程序博客网 时间:2024/05/01 09:17

参考:http://www.cnblogs.com/wanqieddy/archive/2011/09/21/2184257.html


makefile 对 =   :=  ?=   +=  这几个赋值运算符左右两边是否有空格并不做要求。

= 是最基本的赋值,会覆盖之前的值

:= 是覆盖之前的值
?= 是如果没有被赋值过就赋予等号后面的值
+= 是添加等号后面的值

= 与:= 的不同

= 会将整个makefile文件展开后再决定变量的值。定义在前的变量值会受定义在其后的值影响。

eg:

        x = foo
        y = $(x) bar

        x = xyz

all:

        @echo $(y)

结果:xyz bar

:=  变量的值取决于赋值的位置,引用的变量只由前边的值决定。

eg:

        x := foo
        y := $(x) bar
        x := xyz

all:

         @echo $(y)

结果:foo bar

all:后的shell命令必须另起一行用tab键空格




1 0