zoukankan      html  css  js  c++  java
  • 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))

    后文待续

  • 相关阅读:
    ffmpeg 合并文件
    win10 设备摄像头,麦克风,【隐私】权限
    负载均衡,过载保护 简介
    《用Python做科学计算》 书籍在线观看
    Getting Started with OpenMP
    Algorithms & Data structures in C++& GO ( Lock Free Queue)
    PostgreSQL新手入门
    Ubuntu 网络配置
    QT 4.7.6 驱动 罗技C720摄像头
    使用vbs脚本添加域网络共享驱动器
  • 原文地址:https://www.cnblogs.com/gaojian/p/2716681.html
Copyright © 2011-2022 走看看