Makefile 中:= ?= += =的区别(转)

来源:互联网 发布:知名度最高的软件学校 编辑:程序博客网 时间:2024/05/24 07:11

原创链接: http://www.cnblogs.com/wanqieddy/archive/2011/09/21/2184257.html

在Makefile中我们经常看到 = := ?= +=这几个赋值运算符,那么他们有什么区别呢?
= 是最基本的赋值
:= 是覆盖之前的值
?= 是如果没有被赋值过就赋予等号后面的值
+= 是添加等号后面的值

举个栗子:

  • 1、“=”

    make会将整个makefile展开后,再决定变量的值。也就是说,变量的值将会是整个makefile中最后被指定的值。看例子:

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

    在上例中,y的值将会是 xyz bar ,而不是 foo bar 。

  • 2、“:=”

    “:=”表示变量的值决定于它在makefile中的位置,而不是整个makefile展开后的最终值。

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

    在上例中,y的值将会是 foo bar ,而不是 xyz bar 了。

详细解释请看原文

0 0
原创粉丝点击