在make語(yǔ)言中,origin是一個(gè)自帶的函數(shù)。用于查看一個(gè)變量有沒(méi)有定義击你,或到底在哪里被定義的。
語(yǔ)法格式:
$(origin variable)
可能的返回值:
undefined: 這個(gè)變量沒(méi)有被定義
default: 這個(gè)變量是make語(yǔ)言自帶的變量
environment: 這個(gè)變量來(lái)自環(huán)境變量
environment override: 來(lái)自環(huán)境變量谎柄,但是已經(jīng)被修改了
file: 這個(gè)變量來(lái)自Makefile
command line:這個(gè)變量來(lái)自命令行
override: 即使該變量在命令行中定義了丁侄,但仍以Makefile中的為準(zhǔn)。該變量在Makefile中的定義應(yīng)該加了override修飾符朝巫。(通常鸿摇,一個(gè)變量在命令行中被定義了,則在Makefile中的普通定義將被忽略劈猿。)
automatic: 自動(dòng)變量拙吉,例如$@, $%...等。
例如:
ifeq ($(VERBOSE),0)
MAKEFLAGS += --no-print-directory
endif
這樣一段Makefile中的內(nèi)容揪荣,我想知道變量VERBOSE來(lái)自哪里筷黔,我就可以通過(guò)origin函數(shù)來(lái)查看。
$(info $(origin VERBOSE))
ifeq ($(VERBOSE),0)
MAKEFLAGS += --no-print-directory
endif
# make
undefined
原來(lái)這個(gè)變量需要在命令行中定義仗颈。