$(函数名 参数,参数…)
其中函数名和参数之间用空格隔开,参数与参数之间用逗号隔开。下面简单介绍一些常用的基本函数。
- subst
格式:$(subset 参数1,参数2,参数3)
功能:把参数3中的参数1替换成参数2
返回值:被替换后的参数3
例如:
result := $(subst china, the world, I love China)
result的值为“I love the world”。
- patsubst
格式:$(patsubset模式参数,参数1,参数2)
功能:把参数2中符合模式参数的单词(单词是指参addsu数中被空格隔开的字符串)替换成参数1
返回值:被替换后的参数2
例如:
result := $(patsubst %.c, %.o, x.c y.c)
result的值为“x.o y.o”。
- wildcard
格式:$(wildcard模式参数)
功能:列出当前目录下所有符合模式参数的文件名
返回值:当前目录下所有符合模式参数的文件名
例如:
result := $(wildcard *.c)
result的值为当前目录下所有的C文件名。
- strip 参数
格式:$(strip 参数)
功能:去掉参数中开头和结尾的空格
返回值:被去掉空格的参数
例如:
result := $(strip China )
result的值为“China”。
- findstring
格式:$(findstring 参数1,参数2)
功能:在参数2中查找参数1
返回值:如果找到返回参数1,如果没找到返回空
例如:
result := $(findstring me, you and me)
result的值为“me”。
result := $(findstring she, you and me)
result的值为“”。
- filter
格式:$(filter模式参数,参数1)
功能:从参数1中筛选出符合模式参数的字符串
返回值:符合参数模式的字符串
例如:
a := x.c y.c z.h
result := $(filter %.c, $(a))
result的值为“x.c y.c”。
- addsuffix
格式:$(addsuffix 参数1,参数2)
功能:在参数2中的每个单词加上后缀参数1
返回值:加上后缀的所有单词
例如:
result := $(addsuffix .c, x y)
result的值为“x.c y.c”。
- addprefix
格式:$(addprefix 参数1,参数2)
功能:在参数2中的每个单词加上前缀参数1
返回值:加上前缀的所有单词
例如:
result := $(addprefix src/, x.c y.c)
result的值为“src/x.c src/y.c”。
- foreach
格式:$(foreach 变量参数,参数1,表达式)
功能:循环取出参数1中的单词赋给变量参数,然后运行表达式
返回值:表达式的运行结果
例如:
a:= x y z
result := $(foreach b, $(a), $(b).c)
result的值为“x.c y.c z.c”。
注意,b在这里是一个临时的变量。
- call
格式:$(call 变量参数,参数…)
功能:循环把参数依次赋给变量参数中的$(1)、$(2)…
返回值:赋值后的变量值
例如:
a:= $(2) $(1)
result := $(call $(a), x y)
result的值为“yx”。
- if
格式:$(if 条件参数,执行参数)
功能:如果条件参数非空,运行执行参数部分
返回值:条件参数非空,返回执行参数部分
例如:
result := $(if China, world)
result的值为“world”。
格式:$(if 条件参数,执行参数1,执行参数2)
功能:如果条件参数非空,运行执行参数1部分;反之运行执行参数2部分
返回值:条件参数非空,返回执行参数1;反之返回执行参数2
例如:
a:=
result := $(if $(a), China, world)
result的值为“world”。
- dir
格式:$(dir 参数)
功能:从参数中取出目录部分
返回值:目录部分
例如:
result:=$(dir /home/test/a.c)
result的值为“/home/test/”。
- error
格式:$(error 参数)
功能:停止“Make”运行并显示参数
返回值:参数
例如:
result:=$(error error occure!)
result的值为“error occure!”。
- warning
格式:$(warning 参数)
功能:“Make”运行时显示参数
返回值:参数
例如:
result:=$( warning warning occure!)
result的值为“warning occure!”。