03-makefile函数

来源:互联网 发布:和风天气api json解析 编辑:程序博客网 时间:2024/06/07 17:13

会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力

0.1 关于程序的编译和链接

  • 编译:把源文件编译成中间代码文件(.c->.o) (.c->.d)
  • 编译器需要的是语法的正确,函数与变量的声明的正确。
  • 链接:大量的Object File合成执行文件.
    • 主要是链接函数和全局变量,所以,我们可以使用这些中间目标文件(O文件或是OBJ文件)来链接我们的应用程序。在UNIX下,是Archive File,也就是 .a 文件。

0.2 函数

字符串处理函数

 1.$(subst <from>,<to>,<text> )把字串<text>中的<from>字符串替换成<to>。  2.$(patsubst <pattern>,<replacement>,<text> )查找<text>中的单词(单词以“空格”、“Tab”或“回车”“换行”分隔)是否符合模式<pattern>,如果匹配的话,则以<replacement>替换。这里,<pattern>可以包括通配符“%”,表示任意长度的字串。如果<replacement>中也包含“%”,那么,<replacement>中的这个“%”将是<pattern>中的那个“%”所代表的字串。(可以用“\”来转义,以“\%”来表示真实含义的“%”字符)返回:函数返回被替换过后的字符串。“$(var:<pattern>=<replacement> )”   3.$(strip <string> )去掉<string>字串中开头和结尾的空字符。   4.$(findstring <find>,<in> )在字串<in>中查找<find>字串。   5.$(filter <pattern...>,<text> )以<pattern>模式过滤<text>字符串中的单词,保留符合模式<pattern>的单词。可以有多个模式   6.$(filter-out <pattern...>,<text> )    7.$(sort <list> )给字符串<list>中的单词排序(升序)。8.$(word <n>,<text> )取字符串<text>中第<n>个单词。(从一开始)9.$(wordlist <s>,<e>,<text> )从字符串<text>中取从<s>开始到<e>的单词串。<s>和<e>是一个数字。10.$(words <text> )统计<text>中字符串中的单词个数。11.$(firstword <text> )取字符串<text>中的第一个单词。

文件名操作函数

1.$(dir <names...> )从文件名序列<names>中取出目录部分。目录部分是指最后一个反斜杠(“/”)之前的部分。如果没有反斜杠,那么返回“./”。2.$(notdir <names...> )从文件名序列<names>中取出非目录部分。3.$(suffix <names...> )从文件名序列<names>中取出各个文件名的后缀。4.$(basename <names...> )返回文件名序列<names>的前缀序列,如果文件没有前缀,则返回空字串。5.$(addsuffix <suffix>,<names...> )把后缀<suffix>加到<names>中的每个单词后面。6.$(join <list1>,<list2> )把<list2>中的单词对应地加到<list1>的单词后面。$(join aaa bbb , 111 222 333)返回值是“aaa111 bbb222 333”。

foreach 函数

1.$(foreach <var>,<list>,<text> )把参数<list>中的单词逐一取出放到参数<var>所指定的变量中,然后再执行<text>所包含的表达式。names := a b c dfiles := $(foreach n,$(names),$(n).o)files="a.o b.o c.o d.o”。

if 函数

$(if <condition>,<then-part> )或$(if <condition>,<then-part>,<else-part> )

call 函数

$(call <expression>,<parm1>,<parm2>,<parm3>...)reverse = $(1) $(2)foo = $(call reverse,a,b) foo的值就是“b a”。

origin 函数

$(origin <variable> ) ->undefined default environment file "command line" override automatic 
0 0
原创粉丝点击