$(origin variable)詳解

先說一下origin語法:origin函數不像其它函數。他並不直接操作變量的值,只是告訴你這個變量是從哪裏來的?

其語法是:$(origin   variable)

注意這裏是變量的名字,不是引用,所以不要使用“$”字符。origin函數會以返回值告訴你這個變量的“出生情況”(這個變量從哪裏來的?),下面來看一下origin函數的返回值好了。

我們先新建一個Makefile文件,內容是:

ifdef O

ifeq ("$(origin O)", "command line")

BUILD_DIR := $(O)

endif

endif

all :

echo  $(origin O)

echo  $(BUILD_DIR)

注意;這裏的“O”是字母大寫的o,不是數字0.

(1)返回值爲"undefine"時,這個變量沒有被定義過

          直接在命令行中輸入“make”,ifeq是比較兩個變量是否相等,相等才執行後面的語句,顯然這裏並不相等,且因爲BUILD_DIR沒有定義,所以BUILD_DIR爲空。 

(2)返回值爲“command line”時,這個變量是被命令行定義的。

      在命令行中輸入“make   O=命令”

(3)返回值爲“environment”時,這個變量是定義爲環境變量

     我們先把 O定義爲環境變量,然後再make

(4)返回值爲“file”時,這個變量是定義在Makefile中。

     我們在Makefile中再輸入這麼一行定義O變量的命令,然後make。
(5)返回值爲“default”時,變量是默認定義的。‘

(6)返回值爲“override”時,被override指示符重新定義

(7)返回值爲“automatic”時,是一個命令運行中自動化變量
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章