patsubst

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

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

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

  • 示例:

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

把字串 x.c.c bar.c 符合模式 %.c 的单词替换成 %.o ,返回结果是x.c.o bar.o

  • 备注:这和我们前面“变量章节”说过的相关知识有点相似。如$(var:<pattern>=<replacement>;) 相当于$(patsubst <pattern>,<replacement>,$(var)) ,而$(var: <suffix>=<replacement>) 则相当于$(patsubst %<suffix>,%<replacement>,$(var))

例如有:

  1. objects = foo.o bar.o baz.o

那么, $(objects:.o=.c)$(patsubst %.o,%.c,$(objects)) 是一样的。