肆-《變量和不一樣的賦值方式》

第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

    • 簡單賦值 (:=)
    • 遞歸賦值 ( =)
    • 條件賦值 ( ?=)
    • 追加賦值 (+=)
相關文章
相關標籤/搜索