GNU Make工具(三) 文本轉換函數 $origin(...)

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
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章