http://blog.csdn.net/ustc_dylan/article/details/6963248
对上篇文章的函数进行了整理
函数名 | 函数 | 功能 | 例子 |
subst | $(subst <from>,<to>,<text> ) | 把字串<text>中的<from>字符串替换成<to> | $(subst ee,EE,feet on the street) |
patsubst | $(patsubst <pattern>,<replacement>,<text> ) | 查找<text>中的单词(以空格等分隔)是否 | $(patsubst %.c,%.o,x.c.c bar.c) 返回结果是“x.c.obar.o” |
strip | $(strip <string> ) | 去掉<string>字串中开头和结尾的空字符 | $(strip a b c ) 结果是“abc” |
findstring | $(findstring <find>,<in> ) | 在字串<in>中查找<find>字串。 | $(findstring a,a b c) |
filter | $(filter <pattern...>,<text> ) | 以<pattern>模式过滤<text>字符串中的单词,保留符合模式<pattern>的单词。可 | sources := foo.c bar.c baz.s ugh.h
|
filter-out | $(filter-out <pattern...>,<text> ) | 以<pattern>模式过滤<text>字符串中的单词,去除符合模式<pattern>的单词。 | objects=main1.o foo.o main2.o bar.o |
sort | $(sort <list> ) | 给字符串<list>中的单词排序(升序)。 | 注:sort函数会去掉<list>中相同的单词。 |
word | $(word <n>,<text> ) | 取字符串<text>中第<n>个单词。 | $(word 2,foobarbaz)返回值是“bar”。 |
wordlist | $(wordlist <s>,<e>,<text> ) | 从字符串<text>中取从<s>开始到<e>的单词串。<s>和<e>是一个数字。 | $(wordlist 2,3,foobarbaz)返回值是“barbaz”。 |
words | $(words <text> ) | 统计<text>中字符串中的单词个数 | 注:如果我们要取<text>中最后的一个单词,我们可以这样:$(word $(words |
firstword | $(firstword <text> ) | 取字符串<text>中的第一个单词。 |
|
dir | $(dir <names...> ) | 从文件名序列<names>中取出目录部分。目录部分是指最后一个反斜杠(“/”) | $(dir src/foo.chacks) 返回值是“src/./”。 |
notdir | $(notdir <names...> ) | 从文件名序列<names>中取出非目录部分。非目录部分是指最后一个反斜杠(“/ | $(notdir src/foo.c hacks) 返回值是“foo.c hacks”。 |
suffix | $(suffix <names...> ) | 从文件名序列<names>中取出各个文件名的后缀。 | $(suffix src/foo.c src-1.0/bar.c hacks) 返回值是“.c.c”。 |
basename | $(basename <names...> ) | 从文件名序列<names>中取出各个文件名的前缀部分。 | $(basename src/foo.c src-1.0/bar.c hacks) 返回值是“src/foo src-1.0/bar hacks”。 |
addsuffix | $(addsuffix <suffix>,<names...> ) | 把后缀<suffix>加到<names>中的每个单词后面。 | $(addsuffix .c,foo bar)返回值是“foo.cbar.c”。 |
addprefix | $(addprefix <prefix>,<names...> ) | 把前缀<prefix>加到<names>中的每个单词后面。 | $(addprefix src/,foo bar)返回值是“src/foo src/bar” |
join | $(join <list1>,<list2> ) | 把<list2>中的单词对应地加到<list1>的单词后面。如果<list1>的单词个数要比 | $(join aaa bbb,111 222 333)返回值是“aaa111 bbb222 333”。 |
foreach | $(foreach <var>,<list>,<text> ) | 把参数<list>中的单词逐一取出放到参数<var>所指定的变量中,然后再执行<text>所包含的表达式 | names := a b c d |
if | $(if <condition>,<then-part> )或或$(if <condition>,<then-part>,<else-part> ) | 如果<condition>为真(非空字符串),那个<then-part>会是整 个函数的返回值,否则,那么<else-part>会是整个函数的 返回值,此时如果<else-part>没有被定义,那么,整个函数返回空字串。 |
|
call | $(call <expression>,<parm1>,<parm2>,<parm3>...) |
| reverse = $(2) $(1) |
origin | $(origin <variable> ) | 告诉你这个变量是哪里 来的 | 返回值: “undefined”:表示<variable>从来没有定义过 “default”:表示<variable>是一个默认的定义 “environment” :表示<variable>是一个环境变量 “file”:表示<variable>这个变量被定义在Makefile中。 command line”:表示<variable>这个变量是被命令行定义的 override”:表示<variable>是被override指示符重新定义的。 automatic” :表示<variable>是一个命令运行中的自动化变量。 |
shell | 参数应该就是Shell 的命令 | 把执行操作系统命令后的输出作为函数返回 |
|