fuctions
join
?$(join <list1>,<list2>)
連接函數
把list2?中單詞對應的添加到list1?的后面
若list1?的單詞個數> list2 ,多出的list1? 保持不變
若list2?的單詞個數> list21,多出的list2?添加到list1?后面
foreach
?$(foreach <var>,<list>,<text>)
for循環函數
把list的單詞逐一取出放在參數?var?里面,然后在執行text所包含的表達式
call
?$(call <function>,<param1>,<param2>,...)
call?調用其他的函數
param1?對應$(1) ,以此類推
origin
?$(origin var)
查詢var變量的來源
有如下幾種返回值
default,默認的
environment,環境變量
undefined,未定義的
file,makefile內定義的
command?line
override,被override重新定義的
automatic,自動化變量
shell
?$(shell pwd)
?可以與awk?和sed?使用
error
?$(error <texts> )
makefile?控制函數,輸出error?信息?
warning
?$(warning <texts>)
makefile?控制函數,輸出warning?信息
example?
list1 := 111 222 333
list2 := aaa bbb ccc ddd
list := $(join $(list1),$(list2) ) ################################################
#### foreach var,list,text
#### loop in list ,and put evevy item in var and do text
################################################
for_data= item env monitor
rst_for := $(foreach var,$(for_data),$(var).sv )################################################
#### common if
#### when condition return is not "" [strip xxx],call 'then_part' ,else call 'else part'
#### $(if <condition>,<then patr>,<else part> )
#### $(if <condition>,<then patr>)
rst_if = $(if name==ryz, name is ryz,name is not ryz)################################################
#### call function,param1,param2,param3,....
#### call others functions
################################################
max=$(2) $(1).sv
rst_call:=$(call max,119,33)################################################
#### origin var
#### tell var from
#### if var not define ,return undefined
#### if define in makefine ,return file
#### if var is a default ,return default
#### if var is a environment and make not -e option ,return environment
#### if define in makefine ,return file
#### return command line
#### return override
#### return automatic
################################################
var_file := llll
var_file:=$(origin $(var_file) )
var_undefined = $(origin $(var_no) )################################################
#### shell
#### using awk and sed
################################################rst_pwd := $(shell pwd)################################################
#### makefile control functions
#### $(error text),quit now
#### $(warning text),only type text,not quit
################################################
warning_info := $(warning get a warning msg)
error_info =$(error get an error)ifdef ERROR_MSG$(error_info)
endiferr:$(error_info)war:$(warning_info)all:@echo $(list)@echo $(rst_for)@echo $(rst_if)@echo $(rst_call)@echo $(var_file)@echo $(rst_pwd)