Makefile中的幾種賦值方式
阿新 • • 發佈:2018-11-08
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow
也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!
轉載時請註明出處和作者聯絡方式
作者聯絡方式:李先靜 <xianjimli at hotmail dot com>
在Makefile中,對變數的賦值,有好幾種方式,它們的意義、使用的場合都各不相同,初學者往往比較迷惑。這裡對它們的用法簡要介紹一下。
= 遞迴展開賦值,這是預設的賦值方式。Makefile是兩遍解析的,若一個變數引用另外一個變數,兩個變數定義的位置,誰在前誰在後沒有任何關係,都能達到同樣的效果。如:
SUBARCH=arm
ARCH = $(SUBARCH)
all:
@echo $(ARCH)
輸出:
arm
而
ARCH = $(SUBARCH)
SUBARCH=arm
all:
@echo $(ARCH)
也輸出:
arm
?=: 如果沒有初始化該變數,就給它賦上預設值。如:
ARCH=arm
ARCH ?= i386
all:
@echo $(ARCH)
輸出:
arm
而
ARCH ?= i386
all:
@echo $(ARCH)
輸出:
i386
:= 直接賦值,不會遞迴展開,若引用的變數不存在,就展開為空串。如:
SUBARCH=arm
ARCH = $(SUBARCH)
all:
@echo $(ARCH)
輸出:
arm
而
ARCH = $(SUBARCH)
SUBARCH=arm
all:
@echo $(ARCH)
輸出:
(空串)