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))

后文待续

你可能感兴趣的:(Make)