CMAKE中的字符串REG REPLACE

时间:2016-02-03 13:21:02

标签: cmake

  1. 我正在目录

  2. 中搜索头文件
  3. 将所有头文件中的LONG字符串替换为SVN_LONG。

  4. 我不想将 LONG,LONG LONG 替换为SVN_LONG。

  5. 当我在代码下面运行时,它将SLONG替换为SSVN_LONG,LONG更换为SVN_LONG等。
  6. 那么如何避免SLONG,LONGINT不能替换,只有LONG字符串必须替换SVN_LONG?

    <iframe width="560" height="315" src="https://www.youtube.com/embed/6bv0IvzNcvY?showinfo=0&rel=0&autoplay=1&loop=0&playlist=b4ZeoLkeoec,6bv0IvzNcvY" frameborder="0" allowfullscreen></iframe>
    

1 个答案:

答案 0 :(得分:1)

与正则表达式一样,您需要在替换字符串之前匹配符号并将其还原为替换字符串。为此目的,命令string(REGEX REPLACE)支持反向引用

string(REGEX REPLACE "([^a-zA-Z])LONG|^LONG" "\\1SVN_LONG"
    modified_file_content ${file_content})

给定命令在单词LONG之前匹配单个符号(应该与字母不同),并通过反斜杠引用\1恢复此符号(符号&#34; \&#34;需要为在cmake命令中加倍,因为它在转到命令之前由CMake自己解析。)

字符串开头的匹配^需要以LONG开始的轮换。