cmake之string命令

 

string

查找

string(FIND <string> <substring> <output_variable> [REVERSE])

中查找,返回值存放于,找到则返回在中的下标,找不到返回-1。默认为首次出现的匹配,如果使用了REVERSE则为最后一次匹配。注:下标从0开始,以字节做为单位,因此遇到中文时下标表示字符编码第一字节的位置。

替换

string(REPLACE <match_string> <replace_string> 
  <output_variable> <input> [<input>...])

从所有 …中查找并使用替换,替换后的字符串存放于。多个输入时,先将所有输入连接后,再做查找替换。

正则表达式 查找

string(REGEX MATCH <regular_expression>
       <output_variable> <input> [<input>...])

从所有 …中查找匹配到的字符串,并存放于,查不到输出为空字符串。多个输入时先连接再做操作。只匹配第一次。

string(REGEX MATCHALL <regular_expression>
       <output_variable> <input> [<input>...])

MATCHALL和MATCH类似,区别是会查找所有符合的匹配,并将他们连接起来输出。

替换

string(REGEX REPLACE <regular_expression>
       <replacement_expression> <output_variable>
       <input> [<input>...])

根据正则表达式查找,并替换。找不到则输出为输入字符串。可以使用\\1 \\2 ..,\\9来表示()元字符匹配到的字符 。这里使用两个\是因为\要先在字符串中转义,然后在正则匹配中进行转义。

元字符 元字符 意义 ^ 匹配字符串开头 $ 匹配字符串结尾 . 匹配任意单个字符 <char> 转义元字符。在字符串中要使用\ [] 匹配括号内任何字符 [^] 匹配任何不在括号内的字符 [a-e] 表示范围,意义同[abcde]

  • 匹配0次或多次

  • 匹配1次或多次 ? 匹配0次或1次 | 或运算符 () 保存匹配的子表达式 字符串操作 尾部追加

string(APPEND <string_variable> [<input>...])

将所有连接成一个字符串后,追加于后面,新字符串赋值于

头部追加

string(PREPEND <string_variable> [<input>...])

与APPEND相反。将所有连接成一个字符串后,放于前面,新字符串赋值于

连接

string(JOIN <glue> <output_variable> [<input>...])

使用作为连接符,连接所有,输出于

大小写转换

string(TOLOWER <string> <output_variable>)
转换为小写,输出于 ```cmake string(TOUPPER ) ``` 转换为大写,输出于 长度 ```cmake string(LENGTH ) ``` 计算的字节长度,输出于。注:中文这种多字节编码的字符,字节长度大于字符长度。 取子串 ```cmake string(SUBSTRING ) ``` 从中取出为起始下标,长度为的子串,输出于。注:如果为-1或大于源字符串长度则子串为余下全部字符串。 删除收尾空白字符 ```cmake string(STRIP ) ``` 空白字符包括:空格、tab’\t’、换行’\n’ 删除子串中的生成器表达式 ```cmake string(GENEX_STRIP ) ``` 复制字符串 ```cmake string(REPEAT ) ``` 将复制个并连接在一起,输出于 比较 ```cmake string(COMPARE LESS ) # 输出1:string1 < string2,否则输出0 string(COMPARE GREATER )#输出1:string1 > string2,否则输出0 string(COMPARE EQUAL ) #输出1:string1 = string2,否则输出0 string(COMPARE NOTEQUAL )#输出1:string1 != string2,否则输出0 string(COMPARE LESS_EQUAL )#输出1:string1 <= string2,否则输出0 string(COMPARE GREATER_EQUAL )#输出1:string1 >= string2,否则输出0 ``` 字符串加密 ```cmake string( ) ``` 根据指定的编码规则,将进行加密编码,输出于 可取值如下:MD5、SHA1、SHA224、SHA256、SHA384、SHA512、SHA3_224、SHA3_256、SHA3_384、SHA3_512 转换 数字/字符互转 ```cmake string(ASCII [ ...] ) ``` 将ASCii码转为对应的字符,如65转为A,66转为B ```cmake string(HEX ) ``` 将转换为对应的16进制ASii码,如A转为61(61为A十六进制ascii)。 变量替换 ```cmake string(CONFIGURE [@ONLY] [ESCAPE_QUOTES]) # 示例: set(myVar "test") string(CONFIGURE "first${myVar}end, next${myVar2}end" POS) #输出POS变量值为"firsttestend, nextend" ``` 将字符串中对变量的引用替换为变量值(自定义或系统的),如没有定义变量则取空字符串。 [ESCAPE_QUOTES]表示支持转义字符’\’ _替换 ```cmake string(MAKE_C_IDENTIFIER ) ``` 将中所有非字符数字替换为_。如+hello*world()会被替换为_hello_world__ UUID生成 ```cmake string(UUID NAMESPACE NAME TYPE <MD5|SHA1> [UPPER]) ``` 根据NAMESPACE和NAME生成一个UUID字符串。其中NAMESPACE必须为UUID格式的字符串。相同的NAMESPACE和NAME生成的UUID是相同的。 UUID字符串格式xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx [UPPER]表示输出的UUID字符串为大写 TYPE <MD5|SHA1>表示生成UUID时使用的算法。