在make语言中,origin是一个自带的函数。用于查看一个变量有没有定义,或到底在哪里被定义的。
语法格式:
$(origin variable)
可能的返回值:
undefined: 这个变量没有被定义
default: 这个变量是make语言自带的变量
environment: 这个变量来自环境变量
environment override: 来自环境变量,但是已经被修改了
file: 这个变量来自Makefile
command line:这个变量来自命令行
override: 即使该变量在命令行中定义了,但仍以Makefile中的为准。该变量在Makefile中的定义应该加了override修饰符。(通常,一个变量在命令行中被定义了,则在Makefile中的普通定义将被忽略。)
automatic: 自动变量,例如$@, $%...等。
例如:
ifeq ($(VERBOSE),0)
MAKEFLAGS += --no-print-directory
endif
这样一段Makefile中的内容,我想知道变量VERBOSE来自哪里,我就可以通过origin函数来查看。
$(info $(origin VERBOSE))
ifeq ($(VERBOSE),0)
MAKEFLAGS += --no-print-directory
endif
# make
undefined
原来这个变量需要在命令行中定义。