ifdef O
ifeq ("$(origin O)", "command line")
BUILD_DIR := $(O)
endif
endif
这里主要说明origin的语法:
origin函数不像其它的函数,他并不操作变量的值,他只是告诉你你的这个变量是哪里来的?其语法是:
$(origin <variable>;)
注意,<variable>;是变量的名字,不应该是引用。所以你最好不要在<variable>;中使用“$”字符。Origin函数会以其返回值来告诉你这个变量的“出生情况”,下面,是origin函数的返回值:
“undefined”
如果<variable>;从来没有定义过,origin函数返回这个值“undefined”。
“default”
如果<variable>;是一个默认的定义
“environment”
如果<variable>;是一个环境变量,并且当Makefile被执行时,“-e”参数没有被打开。
“file”
如果<variable>;这个变量被定义在Makefile中。
“command line”
如果<variable>;这个变量是被命令行定义的。
“override”
如果<variable>;是被override指示符重新定义的。
“automatic”
如果<variable>;是一个命令运行中的自动化变量。