LENGTH
1. 列表的读取
list (LENGTH <list> <output variable>)
list (LENGTH
说明:output variable
为新创建的变量,用于存储列表的长度。
d
测试用例
cmake_minimum_required (VERSION 3.12.2)
project (list_cmd_test)
set (list_test a b c d) # 创建列表变量 "a;b;c;d"
list (LENGTH list_test length)
message ( ">>> LENGTH: ${length}" )
cmake_minimum_required (VERSION 3.12.2) project (list_cmd_test) set (list_test a b c d) # 创建列表变量 "a;b;c;d" list (LENGTH list_test length) message ( ">>> LENGTH: ${length}" )
输出:
>>> LENGTH: 4
2) GET
:子命令GET用于读取列表中指定索引的的元素,可以指定多个索引。
list (GET [ ...]
说明:1. <element index>
为列表元素的索引,从0开始编号,索引0的元素为列表中的第一个元素;索引也可以是负数,-1
表示列表的最后一个元素,-2
表示列表倒数第二个元素,以此类推。注意:当索引(不管是正还是负)超过列表的长度,运行会报错(list index: XX out of range
)。
2.
<output variable>
为新创建的变量,存储指定索引元素的返回结果,也是一个列表。1)测试用例
# CMakeLists.txt cmake_minimum_required (VERSION 3.12.2) project (list_cmd_test) set (list_test a b c d) # 创建列表变量 "a;b;c;d" list (GET list_test 0 1 -1 -2 list_new) message ( ">>> GET: ${list_new}" )
输出:
# 输出 >>> GET: a;b;d;c
【】FIND
:子命令FIND用于查找列表是否存在指定的元素。
list (FIND
说明:如果列表<list>
中存在<value>
,那么返回<value>
在列表中的索引,如果未找到则返回-1。
# CMakeLists.txt cmake_minimum_required (VERSION 3.12.2) project (list_cmd_test) set (list_test a b c d) # 创建列表变量 "a;b;c;d" list (FIND list_test d list_index) message ( ">>> FIND 'd': ${list_index}" ) list (FIND list_test e list_index) message ( ">>> FIND 'e': ${list_index}" )
输出:
# 输出 >>> FIND 'd' : 3 >>> FIND 'e' : -1
APPEND
APPEND
:子命令APPEND用于将元素追加到列表。
list (APPEND [ ...])
说明:用于改变变量 list 值。
1)测试用例
# CMakeLists.txt cmake_minimum_required (VERSION 3.12.2) project (list_cmd_test) set (list_test a b c d) # 创建列表变量 "a;b;c;d" list (APPEND list_test 1 2 3 4) message ( ">>> APPEND: ${list_test}" )
输出:
>>> APPEND: a;b;c;d;1;2;3;4
INSERT
INSERT
:子命令INSERT用于在指定位置将元素(一个或多个)插入到列表中。
list (INSERT [ ...])
说明: element_index 为列表指定的位置,如果元素的位置超出列表的范围,会报错。此命令会改变原来列表的值。
1)测试用例
cmake_minimum_required (VERSION 3.12.2) project (list_cmd_test) set (list_test a b c d) # 创建列表变量 "a;b;c;d" list (INSERT list_test 0 8 8 8 8) message ( ">>> INSERT: ${list_test}" ) list (INSERT list_test -1 9 9 9 9) message ( ">>> INSERT: ${list_test}" ) list (LENGTH list_test lenght) list (INSERT list_test ${length} 0) message ( ">>> INSERT: ${list_test}" )
输出:
>>> INSERT: 8;8;8;8;a;b;c;d >>> INSERT: 8;8;8;8;a;b;c;9;9;9;9;d >>> INSERT: 8;8;8;8;a;b;c;9;9;9;9;d;0
POP_BACK
POP_BACK
:子命令POP_BACK用于将列表中最后元素移除。
list (POP_BACK [< out - var >...])
说明:
<out-var>
如果未指定输出变量,则仅仅是将原列表的最后一个元素移除。如果指定了输出变量,则会将最后一个元素移入到该变量,并将元素从原列表中移除。如果指定了多个输出变量,则依次将原列的最后一个元素移入到输出变量中,如果输出变量个数大于列表的长度,那么超出部分的输出变量未定义。1)测试用例
cmake_minimum_required (VERSION 3.12.2) project (list_cmd_test) set (list_test a b c d) # 创建列表变量 "a;b;c;d" list (POP_BACK list_test) message ( ">>> POP_BACK: ${list_test}" ) list (POP_BACK list_test outvar1 outvar2 outvar3 outvar4) message ( ">>> POP_BACK: ${list_test}" ) message ( ">>> POP_BACK: ${outvar1}、${outvar2}、${outvar3}、${outvar4}" )
输出:
>>> POP_BACK: a;b;c;d;e >>> POP_BACK: a >>> POP_BACK: e、d、c、b
作者:Domibaba
链接:https://www.jianshu.com/p/89fb01752d6f
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
【】SORT:用于对列表进行排序。
list (SORT [COMPARE ] [CASE < case >] [ORDER ])
说明:
COMPARE
:指定排序方法。有如下几种值可选:1)STRING
:按照字母顺序进行排序,为默认的排序方法;2)FILE_BASENAME
:如果是一系列路径名,会使用basename进行排序;3)NATURAL
:使用自然数顺序排序。CASE
:指明是否大小写敏感。有如下几种值可选:1)SENSITIVE
:按照大小写敏感的方式进行排序,为默认值;2)INSENSITIVE
:按照大小写不敏感方式进行排序。ORDER
:指明排序的顺序。有如下几种值可选:1)ASCENDING
:按照升序排列,为默认值;2)DESCENDING
:按照降序排列。
测试用例
# CMakeLists.txt cmake_minimum_required (VERSION 3.12.2) project (list_cmd_test) set (list_test 3 1 1.1 10.1 3.4 9) list (SORT list_test) # 以字母顺序,按照大小写敏感方式,升序排列 message ( ">>> SORT STRING-SENSITIVE-ASCENDING: ${list_test}" ) list (SORT list_test COMPARE NATURAL ORDER DESCENDING) # 以自然顺序,降序排列 message ( ">>> SORT STRING-SENSITIVE-DESCENDING: ${list_test}" )
输出:
# 输出 >>> SORT STRING-SENSITIVE-ASCENDING: 1;1.1;10.1;3;3.4;9 >>> SORT STRING-SENSITIVE-DESCENDING: 10.1;9;3.4;3;1.1;1