cmake命令之list(转)
一、介绍
cmake的list命令即对列表的一系列操作,cmake中的列表变量是用分号;分隔的一组字符串,
创建列表可以使用set命令(参考set命令),例如:set (var a b c d)创建了一个列表 "a;b;c;d",而set (var "a b c d")则是只创建了一个变量"a c c d"。list命令的具体格式根据子命令不同会有所区别。
下面是list提供的命令
1 list(LENGTH
我们可以看到,list命令的格式如下
list (subcommand[args...])
subcommand为具体的列表操作子命令,例如读取、查找、修改、排序等。为待操作的列表变量,[args...]为对列表变量操作需要使用的参数表,不同的子命令对应的参数也不一致。
1 ENGTH 返回list的长度 2 3 GET 返回list中index的element到value中 4 5 APPEND 添加新element到list中 6 7 FIND 返回list中element的index,没有找到返回-1 8 9 INSERT 将新element插入到list中index的位置 10 11 REMOVE_ITEM 从list中删除某个element 12 13 REMOVE_AT 从list中删除指定index的element 14 15 REMOVE_DUPLICATES 从list中删除重复的element 16 17 REVERSE 将list的内容反转 18 19 SORT 将list按字母顺序排序
二、实例
列表的读取
2.1 LENGTH:子命令LENGTH用于读取列表长度
list (LENGTH
) # 为新创建的变量,用于存储列表的长度。
执行结果
2.2 GET:子命令GET用于读取列表中指定索引的的元素,可以指定多个索引。
list (GET
[ ...] ) #?? 为列表元素的索引,从0开始编号,索引0的元素为列表中的第一个元素;索引也可以是负数,-1表示列表的最后一个元素,-2表示列表倒数第二个元素,以此类推。注意:当索引(不管是正还是负)超过列表的长度,运行会报错(list index: XX out of range)。 # 为新创建的变量,存储指定索引元素的返回结果,也是一个列表。
执行结果
2.3、列表的查找
FIND:子命令FIND用于查找列表是否存在指定的元素。
list (FIND
) ??如果列表 中存在
,那么返回 在列表中的索引,如果未找到则返回-1。
1 macro( __LIST_FILTER listvar regex ) 2 if( ${listvar} ) 3 foreach( __val ${${listvar}} ) 4 if( __val MATCHES "${regex}" ) 5 list( REMOVE_ITEM ${listvar} "${__val}" ) 6 endif() 7 endforeach() 8 endif() 9 endmacro() 10 11 # 使用 12 __LIST_FILTER( __availableToolchainsLst "^[.]" ) # 删除文件 13 __LIST_FILTER( __availableToolchainsLst "llvm" ) 14 __LIST_FILTER( __availableToolchainsLst "renderscript" )
1 # CMakeLists.txt 2 cmake_minimum_required (VERSION 3.12.2) 3 4 project (list_cmd_test) 5 6 set (list_test a b c d) # 创建列表变量"a;b;c;d" 7 8 list (FIND list_test d list_index) 9 10 message (">>> FIND 'd': ${list_index}") 11 12 list (FIND list_test e list_index) 13 14 message (">>> FIND 'e': ${list_index}")
执行结果
转载自:
https://blog.csdn.net/sinat_31608641/article/details/123101692?spm=1001.2101.3001.6650.5&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-5-123101692-blog-123832706.pc_relevant_aa&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-5-123101692-blog-123832706.pc_relevant_aa&utm_relevant_index=10