读《跟我一起写Makefile》笔记

1、字符串处理函数

subst

 
  1. $(subst <from>,<to>,<text>)
  • 名称:字符串替换函数

  • 功能:把字串 <text> 中的 <from> 字符串替换成 <to> 。

  • 返回:函数返回被替换过后的字符串。

patsubst

 
  1. $(patsubst <pattern>,<replacement>,<text>)
  • 名称:模式字符串替换函数。

  • 功能:查找 <text> 中的单词(单词以“空格”、“Tab”或“回车”“换行”分隔)是否符合模式<pattern> ,如果匹配的话,则以 <replacement> 替换。这里, <pattern> 可以包括通配符 % ,表示任意长度的字串。如果 <replacement> 中也包含 % ,那么,<replacement> 中的这个 % 将是 <pattern> 中的那个 % 所代表的字串。(可以用 \ 来转义,以 \% 来表示真实含义的 % 字符)

  • 返回:函数返回被替换过后的字符串。

  1. $(patsubst <pattern>,<replacement>,<text>)
  • 名称:模式字符串替换函数。

  • 功能:查找 <text> 中的单词(单词以“空格”、“Tab”或“回车”“换行”分隔)是否符合模式<pattern> ,如果匹配的话,则以 <replacement> 替换。这里, <pattern> 可以包括通配符 % ,表示任意长度的字串。如果 <replacement> 中也包含 % ,那么,<replacement> 中的这个 % 将是 <pattern> 中的那个 % 所代表的字串。(可以用 \ 来转义,以 \% 来表示真实含义的 % 字符)

  • 返回:函数返回被替换过后的字符串。

  • 示例:

  1. $(patsubst %.c,%.o,x.c.c bar.c)

strip

 
  1. $(strip <string>)
  • 名称:去空格函数。

  • 功能:去掉 <string> 字串中开头和结尾的空字符。

  • 返回:返回被去掉空格的字符串值。

findstring

 
  1. $(findstring <find>,<in>)
  • 名称:查找字符串函数

  • 功能:在字串 <in> 中查找 <find> 字串。

  • 返回:如果找到,那么返回 <find> ,否则返回空字符串。

filter

 
  1. $(filter <pattern...>,<text>)
  • 名称:过滤函数

  • 功能:以 <pattern> 模式过滤 <text> 字符串中的单词,保留符合模式<pattern> 的单词。可以有多个模式。

  • 返回:返回符合模式 <pattern> 的字串。

filter-out

 
  1. $(filter-out <pattern...>,<text>)
  • 名称:反过滤函数

  • 功能:以 <pattern> 模式过滤 <text> 字符串中的单词,去除符合模式<pattern> 的单词。可以有多个模式。

  • 返回:返回不符合模式 <pattern> 的字串。

sort

 
  1. $(sort <list>)
  • 名称:排序函数

  • 功能:给字符串 <list> 中的单词排序(升序)。

  • 返回:返回排序后的字符串。

  • 示例: $(sort foo bar lose) 返回 bar foo lose 。

word

 
  1. $(word <n>,<text>)
  • 名称:取单词函数

  • 功能:取字符串 <text> 中第 <n> 个单词。(从一开始)

  • 返回:返回字符串 <text> 中第 <n> 个单词。如果 <n> 比 <text> 中的单词数要大,那么返回空字符串。

wordlist

 
  1. $(wordlist <ss>,<e>,<text>)
  • 名称:取单词串函数

  • 功能:从字符串 <text> 中取从 <ss> 开始到 <e> 的单词串。 <ss>和 <e> 是一个数字。

  • 返回:返回字符串 <text> 中从 <ss> 到 <e> 的单词字串。如果 <ss>比 <text> 中的单词数要大,那么返回空字符串。如果 <e> 大于 <text> 的单词数,那么返回从 <ss> 开始,到 <text> 结束的单词串。

words

 
  1. $(words <text>)
  • 名称:单词个数统计函数

  • 功能:统计 <text> 中字符串中的单词个数。

  • 返回:返回 <text> 中的单词数。

firstword

 
  1. $(firstword <text>)
  • 名称:首单词函数——firstword。

  • 功能:取字符串 <text> 中的第一个单词。

  • 返回:返回字符串 <text> 的第一个单词。

2、文件名操作函数

dir

 
  1. $(dir <names...>)
  • 名称:取目录函数——dir。

  • 功能:从文件名序列 <names> 中取出目录部分。目录部分是指最后一个反斜杠( / )之前的部分。如果没有反斜杠,那么返回 ./ 。

  • 返回:返回文件名序列 <names> 的目录部分。

notdir

 
  1. $(notdir <names...>)
  • 名称:取文件函数——notdir。

  • 功能:从文件名序列 <names> 中取出非目录部分。非目录部分是指最後一个反斜杠( / )之后的部分。

  • 返回:返回文件名序列 <names> 的非目录部分。

suffix

 
  1. $(suffix <names...>)
  • 名称:取後缀函数——suffix。

  • 功能:从文件名序列 <names> 中取出各个文件名的后缀。

  • 返回:返回文件名序列 <names> 的后缀序列,如果文件没有后缀,则返回空字串。

basename

 
  1. $(basename <names...>)
  • 名称:取前缀函数——basename。

  • 功能:从文件名序列 <names> 中取出各个文件名的前缀部分。

  • 返回:返回文件名序列 <names> 的前缀序列,如果文件没有前缀,则返回空字串。

addsuffix

 
  1. $(addsuffix <suffix>,<names...>)
  • 名称:加后缀函数——addsuffix。

  • 功能:把后缀 <suffix> 加到 <names> 中的每个单词后面。

  • 返回:返回加过后缀的文件名序列。

addprefix

 
  1. $(addprefix <prefix>,<names...>)
  • 名称:加前缀函数——addprefix。

  • 功能:把前缀 <prefix> 加到 <names> 中的每个单词后面。

  • 返回:返回加过前缀的文件名序列。

join

 
  1. $(join <list1>,<list2>)
  • 名称:连接函数——join。

  • 功能:把 <list2> 中的单词对应地加到 <list1> 的单词后面。如果 <list1> 的单词个数要比 <list2> 的多,那么, <list1> 中的多出来的单词将保持原样。如果<list2> 的单词个数要比 <list1> 多,那么, <list2> 多出来的单词将被复制到<list1> 中。

  • 返回:返回连接过后的字符串。

3、foreach函数

读《跟我一起写Makefile》笔记

4、if函数

读《跟我一起写Makefile》笔记

5、call函数

读《跟我一起写Makefile》笔记

6、origin函数

读《跟我一起写Makefile》笔记

7、shell函数

读《跟我一起写Makefile》笔记

8、控制make的函数

读《跟我一起写Makefile》笔记