Makefile: 函数origin

2017-12-07  本文已影响16人  louyang

在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

原来这个变量需要在命令行中定义。

上一篇下一篇

猜你喜欢

热点阅读