`
test_angel
  • 浏览: 49976 次
  • 性别: Icon_minigender_2
  • 来自: 西安
社区版块
存档分类
最新评论

Makefile学习(5)

 
阅读更多

这周学习学习函数的知识。(后天就放假了,很期待!)

1.函数的语法:

 

$(<function> <arguments>)
或者
${<function> <arguments>}

 其中:

  • <function>是函数名
  • <arguments>是函数的参数,参数间以逗号“,”分隔
  • 函数名和参数之间以“空格”分隔
  • 函数调用以“$”开头,以圆括号或者花括号把函数名和参数括起

 

2.示例:

comma:=,
empty:=
space:=$(empty) $(empty)
foo:=a b c 
bar:=$(subst $(space),$(comma),$(foo))

其中:

  • $(comma)的值是一个逗号
  • $(space)使用了$(empty)定义了一个空格
  • $(foo)的值是“a b c”
  • 函数“subst”是一个替换函数,这个函数有三个参数,第一个参数是被替换的字串,第二个参数是替换字串,第三个参数是替换操作作用的字串,这个函数也就是把$(foo)中的空格提啊换成“,”。
  • $(bar)调用了函数“subst”,所以$(bar)的值是“a,b,c”

 

3.字符串处理函数

3.1字符串替换函数

  • 函数名:subst
  • 语法:$(subst <from>,<to>,<text>)
  • 功能:把字串<text>中的<from>字符串替换成<to>
  • 返回:返回被替换过后的字符串
  • 示例:
$(subst ee,EE, feet on the street)
  •  说明:把“feet on the street”中的“ee”替换成“EE”,返回结果是“fEEt on the strEEt”

 

3.2模式字符串替换函数

  • 函数名:patsubst
  • 语法:$(patsubst <pattern>,<replacement>,<text>)
  • 功能:查找<text>中的单词(单词以“空格”、“Tab”或着“回车”、“换行”分隔)是否符合模式<pattern>,如果匹配,则以<replacement>替换。这里<pattern>可以包括通配符"%",表示任意长度的字串。如果<replacement>中包含"%",那么<replacement>中的这个“%”将是<pattern>中的那个“%”所代表的字串。(可以用“\%”表示真实含义的“%”)
  • 返回:返回被替换过后的字符串
  • 示例:
$(patsubst %.c,%.o,x.c.c bar.c
  •  说明:把“x.c.c bar.c”符合模式[%.c]的单词换成[%.o],返回结果是“x.c.o bar.o”

 

3.1.3去掉空格函数

  • 函数名:strip
  • 语法:$(strip<string>)
  • 功能:去掉<string>字串中开头和结尾的空格,类似与trim()
  • 返回:返回被去掉空格的字符串值
  • 示例:
$(strip a b c )
  •  说明:把“a b c ”字串中开头和结尾的空格去掉,返回结果是“a b c”

 

3.1.4查找字符串函数

  • 函数名:findstring
  • 语法:$(findstring <find>,<in>)
  • 功能:在字串<in>中查找<find>字串
  • 返回:如果找到,则返回<find>,否则返回空字符串
  • 示例:
$(findstring a,a b c)
$(findstring a,b,c)
  •  说明:第一个函数返回“a”,第二个函数返回“ ”字符串(空字符串)

 

3.1.5过滤函数

  • 函数名:filter
  • 语法:$(filter <pattern...>,<text>)
  • 功能:以<pattern>模式过滤<text>字符串中的单词,保留符合模式<pattern>的单词。可以有多个模式
  • 返回:返回符合模式<pattern>的字串
  • 示例:
sources:=foo.c bar.c baz.s ugh.h
foo:$(sources)
     cc $(filter %.c %.s,$(sources)) -o foo 
  • 说明:$(filter %.c %.s,$(sources))返回值是“foo.c bar.c baz.s”

 

3.1.6反过滤函数

  • 函数名:filter-out
  • 语法:$(filter-out <pattern...>,<text>)
  • 功能:以<pattern>模式过滤<text>字符串中的单词,去除符合模式<pattern>的单词。可以有多个模式
  • 返回:返回不符合模式<pattern>的字串
  • 示例:
objects=main1.o foo.o main2.o bar.o
mains=main1.o  main2.o
$(filter-out $(mians),$(objects))
  • 说明:$(filter-out $(mains),$(objecrs))返回值是“foo.o bar.o”

 

3.1.7排序函数

  • 函数名:sort
  • 语法:$(sort<list>)
  • 功能:给字符串<list>中的单词排序(升序)
  • 返回:返回排序后的字串
  • 示例:
$(sort foo bar lose)
  • 说明:
  • 返回值是“bar foo lose”
  • sort函数会去掉<list>中相同的单词

 

3.1.8取单词函数

  • 函数名:word
  • 语法:$(word <n>,<text>)
  • 功能:取字符串<text>中第<n>个单词(从1开始)
  • 返回:返回字符串<text>中第<n>个单词。如果<n>比<text>中的单词数要大,则返回空字符串
  • 示例:
$(word 2,foo bar lose)
  • 说明:返回值是“bar”

 

3.1.9取单词串函数

  • 函数名:wordlist
  • 语法:$(wordlist <s>,<e>,<text>)
  • 功能:从字符串<text>中取从<s>开始到<e>个单词串。<s><e>是一个数字
  • 返回:返回字符串<text>中从<s>开始到<e>个单词串。如果<s>比<text>中的单词数要大,则返回空字符串;如果<e>大于单词数,则从<s>开始,到结束
  • 示例:
$(wordlist 2,3,foo bar lose)
  • 说明:返回值是“bar lose”

 

3.1.10单词个数统计函数

  • 函数名:words
  • 语法:$(words<text>)
  • 功能:统计<text>中字符串中单词个数
  • 返回:返回字符串<text>中单词数
  • 示例:
$(words foo bar lose)
  • 说明:返回值是“3”

 

 

3.1.11首单词函数

  • 函数名:firstword
  • 语法:$(firstword <text>)
  • 功能:从字符串<text>中取第一个单词
  • 返回:返回字符串<text>中第一个单词
  • 示例:
$(firstword foo bar lose)
  • 说明:返回值是“foo”
分享到:
评论
2 楼 test_angel 2012-04-07  
nanapoleon 写道
那要如何定义函数呢?

在学习(6)中说明啦!
1 楼 nanapoleon 2012-04-02  
那要如何定义函数呢?

相关推荐

Global site tag (gtag.js) - Google Analytics