cmake:list

1060 篇文章 297 订阅

列表操作。

概要

Reading
  list(LENGTH <list> <out-var>)
  list(GET <list> <element index> [<index> ...] <out-var>)
  list(JOIN <list> <glue> <out-var>)
  list(SUBLIST <list> <begin> <length> <out-var>)

Search
  list(FIND <list> <value> <out-var>)

Modification
  list(APPEND <list> [<element>...])
  list(FILTER <list> {INCLUDE | EXCLUDE} REGEX <regex>)
  list(INSERT <list> <index> [<element>...])
  list(POP_BACK <list> [<out-var>...])
  list(POP_FRONT <list> [<out-var>...])
  list(PREPEND <list> [<element>...])
  list(REMOVE_ITEM <list> <value>...)
  list(REMOVE_AT <list> <index>...)
  list(REMOVE_DUPLICATES <list>)
  list(TRANSFORM <list> <ACTION> [...])

Ordering
  list(REVERSE <list>)
  list(SORT <list> [...])

注意:

  • 当指定索引值时,如果< element index >大于等于0,则从列表的开始处进行索引,0表示列表的第一个元素。
  • 如果< element index >的值小于或等于-1,则从列表的末尾开始索引,其中-1表示列表的最后一个元素。
  • 当使用负索引计数时要小心:它们不是从0开始的。-0等价于0,list的第一个元素。

读取

list(LENGTH <list> <output variable>)

返回列表的长度。

list(GET <list> <element index> [<element index> ...] <output variable>)

返回由列表中的索引指定的元素的列表。

list(JOIN <list> <glue> <output variable>)

3.12新版功能。

返回一个使用glue字符串连接所有列表元素的字符串。要连接多个不属于列表的字符串,使用join操作符from string()命令。

list(SUBLIST <list> <begin> <length> <output variable>)

3.12新版功能。

返回给定列表的子列表。

  • 如果< length >是0,则返回一个空列表。
  • 如果< length >为-1,或者列表小于< begin >+< length >,则返回列表中从< begin >开始的其余元素。

查找

list(FIND <list> <value> <output variable>)

返回列表中指定元素的索引,如果没有找到则返回-1。

修改

list(APPEND <list> [<element> ...])

向列表添加元素。

list(FILTER <list> <INCLUDE|EXCLUDE> REGEX <regular_expression>)

3.6新版功能。

从列表中包含或删除(filter)匹配模式模式的项。在REGEX模式下,条目将根据给定的正则表达式进行匹配。

有关正则表达式的更多信息,请查看string(REGEX)。

list(INSERT <list> <element_index> <element> [<element> ...])

将列表中的元素插入到指定位置。

list(POP_BACK <list> [<out-var>...])

版本3.15中的新功能。

如果没有给定变量名,则只删除一个元素。否则,将最后一个元素的值赋给给定的变量并将其删除,直到给定的最后一个变量名为止。

list(POP_FRONT <list> [<out-var>...])

3.15新版功能。

如果没有给出变量名,则只删除一个元素。否则,将第一个元素的值赋给给定的变量并删除它,直到最后一个给定的变量名。

list(PREPEND <list> [<element> ...])

3.15新版功能。

将元素插入到列表的第0个位置。

list(REMOVE_ITEM <list> <value> [<value> ...])

从列表中删除给定项的所有实例。

list(REMOVE_AT <list> <index> [<index> ...])

从列表中删除给定索引处的项。

list(REMOVE_DUPLICATES <list>)

删除列表中重复的项。保留项的相对顺序,但如果遇到重复项,则只保留第一个实例。

list(TRANSFORM <list> <ACTION> [<SELECTOR>]
                      [OUTPUT_VARIABLE <output variable>])

3.12新版功能。

通过对所有元素应用操作,或者通过指定,对列表中选定的元素进行转换,将结果存储在原位或存储在指定的输出变量中。

注意,TRANSFORM子命令并没有改变列表中的元素数量。如果指定了,那么只会改变一些元素,其他的元素将保持转换前的相同。

< ACTION >指定要应用于列表元素的操作。这些操作的语义与string()命令的子命令完全相同操作。< ACTION >值必须是以下之一:

  • APPEND,PREPEND:将指定的值附加到列表的每个元素。
list(TRANSFORM <list> <APPEND|PREPEND> <value> ...)
  • TOUPPER, TOLOWER: 转换为大、小写
list(TRANSFORM <list> <TOLOWER|TOUPPER> ...)
  • STRIP:从列表的每个元素中删除前导空格和尾随空格。
list(TRANSFORM <list> STRIP ...)
  • GENEX_STRIP:从列表的每个元素中删除生成器表达式。
list(TRANSFORM <list> GENEX_STRIP ...)
  • REPLACE:尽可能多次匹配正则表达式,并将替换表达式替换为列表中每个元素的匹配(语义与REGEX REPLACE from string()命令相同)。
list(TRANSFORM <list> REPLACE <regular_expression>
                              <replace_expression> ...)

< SELECTOR >确定要转换列表中的哪些元素。一次只能指定一种类型的选择器。给定时,< SELECTOR >必须是以下之一:

  • AT:指定一个索引列表。
list(TRANSFORM <list> <ACTION> AT <index> [<index> ...] ...)
  • FOR:指定一个范围,可选地使用一个增量来遍历该范围。
list(TRANSFORM <list> <ACTION> FOR <start> <stop> [<step>] ...)
  • REGEX:指定正则表达式。只有匹配正则表达式的元素才会被转换。
list(TRANSFORM <list> <ACTION> REGEX <regular_expression> ...)

顺序

list(REVERSE <list>)

反转列表的内容。

list(SORT <list> [COMPARE <compare>] [CASE <case>] [ORDER <order>])

按字母顺序对列表进行适当的排序。

3.13新版功能:添加了COMPARE、CASE和ORDER选项。

3.18新版功能:添加了COMPARE NATURAL选项。

使用COMPARE关键字选择排序的比较方法。< compare >选项应该是以下选项之一:

  • STRING:按字母顺序排列字符串列表。如果没有给出COMPARE选项,这是默认行为。
  • FILE_BASENAME:按基名对文件路径名列表进行排序。
  • NATURAL:使用自然顺序对字符串列表进行排序(参见strverscmp(3) manual),即连续的数字作为整数进行比较。例如:下面的列表10.0 1.1 2.1 8.0 2.0 3.1将被排序为1.1 2.0 2.1 3.1 8.0 10.0,如果选择了NATURAL比较,它将被排序为1.1 10.0 2.0 2.1 3.1 8.0 8.0与STRING比较。

使用CASE关键字选择区分大小写或不区分大小写的排序模式。< case >选项应该是以下选项之一:

  • SENSITIVE:列表项区分大小写。如果没有给出CASE选项,这是默认行为。
  • INSENSITIVE:列表项不区分大小写。没有指定仅以大写/小写区分的项的顺序。

要控制排序顺序,可以给出order关键字。< order >选项应该是以下选项之一:

  • ASCENDING:将列表按升序排序。这是没有给出ORDER选项时的默认行为。
  • DESCENDING:将列表按降序排序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值