makefile中常见函数应用例子
1)subst函数:
subst函数用于字符串替换。以下是一个示例:
$(subst ee,EE,feet on the street)
2)patsubst函数:
patsubst函数用于模式字符串替换。以下是一个示例:
$(patsubst %a,X,1a 2a 3a)
这个表达式中,"%"表示匹配任意字符,"a"是要被替换的字符,"X"是替换后的字符,“1a 2a 3a"是要被操作的字符串。这个函数将返回"X 2X 3X”。
3)addsuffix函数:
addsuffix函数用于给文件名列表添加后缀。以下是一个示例:
$(addsuffix .c,foo bar)
这个表达式将返回"foo.c bar.c"。
4)addprefix函数:
addprefix函数用于给文件名列表添加前缀。以下是一个示例:
$(addprefix src/,foo bar)
5)basename函数:
basename函数用于提取文件路径中的文件名。以下是一个示例:
$(basename src/foo.c src-1.0/bar.c hacks)
6)foreach函数:
foreach函数用于循环处理列表中的元素。以下是一个示例:
names := a b c d
files := $(foreach n,$(names),$(n).o)
在这个例子中,(name)中的单词"a"、“b”、“c"和"d"会被依次取出,并存到变量"n"中,然后根据变量"n"的值计算出一个文件名,这些文件名以空格分隔,最后作为foreach函数的返回值,所以,(files)的值是"a.o b.o c.o d.o”。
7)if函数:
if函数用于条件判断。以下是一个示例:
$(if <condition>,then-part[,else-part])
这个函数会根据条件判断结果返回相应的部分,如果条件为真,则返回then-part,否则返回else-part。例如,下面的代码判断文件是否存在:
$(if target-file,target-part[,other-part])
如果文件"target-file"存在,则返回"target-part",否则返回"other-part"。