GNU make manual 翻译( 一百八十六)

继续翻译

8.2 Functions for String Substitution and Analysis
==================================================

Here are some functions that operate on strings:

`$(subst FROM,TO,TEXT)'
     Performs a textual replacement on the text TEXT: each occurrence
     of FROM is replaced by TO.  The result is substituted for the
     function call.  For example,

          $(subst ee,EE,feet on the street)

     substitutes the string `fEEt on the strEEt'.

`$(patsubst PATTERN,REPLACEMENT,TEXT)'
     Finds whitespace-separated words in TEXT that match PATTERN and
     replaces them with REPLACEMENT.  Here PATTERN may contain a `%'
     which acts as a wildcard, matching any number of any characters
     within a word.  If REPLACEMENT also contains a `%', the `%' is
     replaced by the text that matched the `%' in PATTERN.  Only the
     first `%' in the PATTERN and REPLACEMENT is treated this way; any
     subsequent `%' is unchanged.

     `%' characters in `patsubst' function invocations can be quoted
     with preceding backslashes (`\').  Backslashes that would
     otherwise quote `%' characters can be quoted with more backslashes.
     Backslashes that quote `%' characters or other backslashes are
     removed from the pattern before it is compared file names or has a
     stem substituted into it.  Backslashes that are not in danger of
     quoting `%' characters go unmolested.  For example, the pattern
     `the\%weird\\%pattern\\' has `the%weird\' preceding the operative
     `%' character, and `pattern\\' following it.  The final two
     backslashes are left alone because they cannot affect any `%'
     character.

     Whitespace between words is folded into single space characters;
     leading and trailing whitespace is discarded.

     For example,

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

     produces the value `x.c.o bar.o'.

     Substitution references (*note Substitution References:
     Substitution Refs.) are a simpler way to get the effect of the
     `patsubst' function:

          $(VAR:PATTERN=REPLACEMENT)

     is equivalent to

          $(patsubst PATTERN,REPLACEMENT,$(VAR))

     The second shorthand simplifies one of the most common uses of
     `patsubst': replacing the suffix at the end of file names.

          $(VAR:SUFFIX=REPLACEMENT)

     is equivalent to

          $(patsubst %SUFFIX,%REPLACEMENT,$(VAR))

8.2 字符串替换和分析函数
==================================================

这里有一些操作字符串的函数:

`$(subst FROM,TO,TEXT)' 在文本TEXT 上完成文本替换:每一次发现FROM,就替换为TO。

在函数调用的时候,结果替换完毕。例如,

$(subst ee,EE,feet on the street)

替换结果为: `fEEt on the strEEt'。

找到在TEXT中被空格分隔的,匹配PATTERN的单词,用REPLACEMENT 来替换它们。这里 PATTERN 可以包含一个%,%是一个通配符浩,匹配在一个单词中的任意多个的单词。如果REPLACEMENT 中也包含%,那么%被匹配PATTERN的文本替换。只有PATTERN和 REPLACEMENT 中的第一个% 才会被如此处理;任何后续的% 都不会被修改。

在patsubst 函数运行中,%符号可以被用前导的反斜线来引用。反斜线也可以被反斜线引用。此反斜线在被用来参与比较运算或者枝干替换之前就会被模式去除。

不影响到%字符的反斜线不会导致麻烦。例如 模式 'the\%weird\\%pattern\\' 在 操作性的%符号之前,有 'the%weird\', 后面跟着  'pattern\\'。最后的两个反斜线被单独扔下,因为它们不会影响到任何%符号。

在单词中的空格会被转换为单个空格,而前面的后面的空格会被除掉。

例如,$(patsubst %.c,%.o,x.c.c bar.c) 产生的结果是:`x.c.o bar.o'.

替换参照是一个 (*note Substitution References:
Substitution Refs.) 获得和 patsubst 函数一样效果的方式:
`patsubst' function:

$(VAR:PATTERN=REPLACEMENT)

等价于

$(patsubst PATTERN,REPLACEMENT,$(VAR))

第二个快捷方式简化了最普通的对pstsubst的用法,在文件名的结尾替换了前缀。

$(VAR:SUFFIX=REPLACEMENT)

等价于

$(patsubst %SUFFIX,%REPLACEMENT,$(VAR))

后文待续

原文地址:https://www.cnblogs.com/gaojian/p/2716681.html