CMake 13 列表操作
1 读取列表
CMake中的列表是以分号(;)分隔的一组字符串,可以通过set指令来定义。
set(var a b c d e),这就定义了一个列表a;b;c;d;e。
注意 set(var “a b c d e”)只是定义了一个字符串,并不是列表
列表的长度
list(LENGTH <列表> <输出变量>),把列表的长度读取到输出变量
读取列表中的元素
list(GET <元素索引> [<元素索引> …] 输出变量)
元素索引可正可负,当为正数时,从列表开头开始索引,0开始为第1个元素,当为负数时,从列表结尾开始索引,-1为最后一个元素。读取到的元素值放到输出变量
列表连接成字符串
list(JOIN <列表> <连接符> <输出变量>)
把列表的元素连接成一个字符串,元素之间以指定的连接符分隔。
读取子列表
list(SUBLIST <列表> <开始索引> <子列表个数> 输出变量)
从列表的开始索引起读取指定个数作为子列表返回给输出变量。如果子列表个数为-1,或开始索引+子列表个数大于列表的元素数,则从开始索引到列表结尾一起作为子列表返回给输出变量。
2 搜索列表
CMake中对列表的搜索可以用下面的指令:
list(FIND <列表> <值> <输出变量>)
在列表中搜索给定的值,如果有匹配的,对应索引值存到输出变量中,如果有多个则只取第一个匹配的索引,如果没有匹配的则输出-1.
3 列表的增 删 改
增加元素
list(APPEND <list> [<element> …]) 在列表末尾添加给定元素
list(PREPEND <list> [<element> …]) 在列表开头添加给定元素
list(INSERT <list> <index> [<element>…]) 在列表指定索引位置插入元素
删除元素
list(REMOVE_ITEM <list> [<value> …]) 删除指定元素
list(REMOVE_AT <list> [<index> …]) 删除指定索引位置的元素
list(POP_BACK <list> [<out-var> …]) 删除列表末尾的元素,out-var参数没有的话,只删除一个,否则根据out-var的个数删除相应个数,并把删除的元素赋给out-var
list(POP_FRONT <list> [<out-var> …]) 同POP_BACK只是删除列表开头元素
list(REMOVE_DUPLICATES <list>) 删除重复的元素,只保留第一次发现的那个
按正则表达式保留或去除元素
list(FILTER <list> {INCLUDE|EXCLUDE} REGEX <regex>)
INCLUDE,匹配regex的元素保留,
EXCLUDE的话,匹配regex的元素被删除
4 列表的排序
倒序指令 list(REVERSE <list>)
list(SORT <list> [COMPARE <compare>] [CASE <case>] [ORDER <order>])
compare: STRING,按字母表顺序;FILE_BASENAME,列表中的元素为路径,按路径的基础名排序;NATURAL,按数字顺序排序
case:SENSITIVE,区别大小写;INSENSITIVE,不区别大小写。
order指定升序还是降序:ASCENDING,升序,DESCENDING,降序。
5 列表转换
list(TRANSFORM <列表> <操作> [<选择器>] [OUTPUT_VARIABLE<输出变量>])
所有的操作都是对元素进行操作,如果指定输出变量,则源列表不变,操作后的列表赋给输出变量。
在元素的后面或前面添加指定字符
list(TRANSFORM <列表> <APPEND|PREPEND> <值> …)
把元素变为小写或大写
list(TRANSFORM <列表> <TOLOWER|TOUPPER> <值> …)
删除元素头尾的空白
list(TRANSFORM <列表> STRIP …)
posted on 2020-11-01 00:05 merlinzjl 阅读(1144) 评论(0) 编辑 收藏 举报