• 【cmake】list


    LENGTH

    1. 列表的读取

    list (LENGTH <list> <output variable>)
    list (LENGTH  )

     说明:output variable 为新创建的变量,用于存储列表的长度。

    测试用例

    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

    参考资料

    1. cmake官方文档

    2. cmake命令之list介绍

  • 相关阅读:
    基于udp简单聊天的系统
    网络编程_tcp与dup协议简单应用
    logging_modules
    linux内核配置与编译
    linux内核简介
    对于国嵌上学期《一跃进入C大门》Mini2440的代码修正
    通过按键玩中断
    MMU功能解析、深入剖析、配置与使用
    C与汇编混合编程
    一跃进入C大门
  • 原文地址:https://www.cnblogs.com/sunbines/p/16154426.html
Copyright © 2020-2023  润新知