Makefile: 函数origin

在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

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容