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
。