乐趣区

关于程序员:肆变量和不同的赋值方式

第 4 课 – 变量和不同的赋值形式

  • makefile 中反对程序设计语言中的变量的概念
  • makefile 中的变量只代表文本数据 (字符串)
  • makefile 中的变量名规定

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

变量的定义和应用

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 中存在四种变量的赋值形式

    • 简略赋值 (:=)
    • 递归赋值 (=)
    • 条件赋值 (?=)
    • 追加赋值 (+=)
退出移动版