肆-《变量和不一样的赋值方式》

第4课 - 变量和不一样的赋值方式

  • makefile 中支持程序设计语言中的变量的概念
  • makefile 中的变量只表明文本数据(字符串)
  • makefile 中的变量名规则spa

    • 变量名能够包含字符,数字,下划线
    • 不能包含“:” “#”, “=” 或 “ ”
    • 变量名大小写敏感

变量的定义和使用

图片.png

makefile 中变量的赋值方式

  • 简单赋值(:=)
  • 递归赋值(=)
  • 条件赋值(?=)
  • 追加赋值(+=)

不一样的赋值方式意义不一样设计

简单赋值(:=)

  • 程序设计语言中的通用赋值方式
  • 只针对当前语句的变量有效
x := foo
y := $(x)b
x := new

.PHONY : test 

test : 
    @echo "x => $(x)"
    @echo "y => $(y)"   

// 最终输出结果    
// x => new
// y => foob

递归赋值(=)

  • 赋值操做可能影响多个其它变量
  • 全部与目标变量相关的其它变量都受到影响
x = foo
y = $(x)b
x = new

.PHONY : test 

test : 
    @echo "x => $(x)"
    @echo "y => $(y)"   

// 最终输出结果    
// x => new
// y => newb

条件赋值(?=)

  • 若是变量未定义,使用赋值符号中的值定义变量
  • 若是变量已经定义,赋值无效
x := foo
y := $(x)b
x ?= new

.PHONY : test 

test : 
    @echo "x => $(x)"
    @echo "y => $(y)"   

// 最终输出结果    
// x => new
// y => foob

追加赋值(+=)

  • 原变量值以后加上一个新值
  • 原变量值与新值之间有空格隔开
x := foo
y := $(x)b
x += $(y)

.PHONY : test 

test : 
    @echo "x => $(x)"
    @echo "y => $(y)"   

// 最终输出结果    
// x => foob foob
// y => foob

小结

  • makefile 中支持变量的定义和使用
  • makefile 中存在四种变量的赋值方式code

    • 简单赋值 (:=)
    • 递归赋值 ( =)
    • 条件赋值 ( ?=)
    • 追加赋值 (+=)
相关文章
相关标签/搜索