Functions for Transforming Text
origin
$(origin variable)
这个函数作用是返回一个表明变量 varible
是如何定义的字符串。
字符串包括
- undefined:未定义的变量
- default:比如 CC CXX
Variables Used by Implicit Rules
- environment:环境变量
- environment override:make -e 选项所覆盖的环境变量
- file:在makefile中定义的变量
- command line:在命令行定义的变量
- override:makefile 中通过 override 得到的变量
- automatic:makefile中保留的变量,如
@,^
DEFINED_IN_FILE="good"
LOGNAME=""
override OVERRIDE="override you"
OVERRIDE="assign again success"
all: clean
@echo "Okay, this is $(CC)"
ifeq "$(origin CC)" "default"
CC = clang
endif
clean:
@echo "The XX is never defined: $(origin XX)"
@echo "The CXX is default: $(origin CXX)"
@echo "PATH is defined in the environment: $(origin PATH)"
@echo "LOGNAME is override by environment variable: $(origin LOGNAME)"
@echo "DEFINED_IN_FILE is defined in the makefile: $(origin DEFINED_IN_FILE)"
@echo "COMMAND_LINE type is: $(origin COMMAND_LINE)"
@echo "OVERRIDE is $(OVERRIDE), override type: $(origin OVERRIDE)"
@echo "@ is the automatic variable: $(origin @)"
运行 make OVERRIDE="hhh" COMMAND_LINE=1 -e
,-e
选项引入了环境变量,覆盖makefile中定义的同名变量 LOGNAME
。