【CMake学习】list使用

2023-05-16

添加链接描述

一、介绍

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提供的命令

list(LENGTH <list><output variable>)
list(GET <list> <elementindex> [<element index> ...]<output variable>)
list(APPEND <list><element> [<element> ...])
list(FIND <list> <value><output variable>)
list(INSERT <list><element_index> <element> [<element> ...])
list(REMOVE_ITEM <list> <value>[<value> ...])
list(REMOVE_AT <list><index> [<index> ...])
list(REMOVE_DUPLICATES <list>)
list(REVERSE <list>)
list(SORT <list>)

我们可以看到,list命令的格式如下

list (subcommand [args…])
subcommand为具体的列表操作子命令,例如读取、查找、修改、排序等。list为待操作的列表变量,[args…]为对列表变量操作需要使用的参数表,不同的子命令对应的参数也不一致。

ENGTH          返回list的长度
GET           返回list中index的element到value中
APPEND         添加新element到list中
FIND           返回list中element的index,没有找到返回-1
INSERT           将新element插入到list中index的位置
REMOVE_ITEM      从list中删除某个element
REMOVE_AT       从list中删除指定index的element
REMOVE_DUPLICATES 从list中删除重复的element
REVERSE         将list的内容反转
SORT           将list按字母顺序排序

二、实例

列表的读取

2.1 LENGTH:子命令LENGTH用于读取列表长度

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

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}")```

2.2 GET:子命令GET用于读取列表中指定索引的的元素,可以指定多个索引。

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

element index为列表元素的索引,从0开始编号,索引0的元素为列表中的第一个元素;索引也可以是负数,-1表示列表的最后一个元素,-2表示列表倒数第二个元素,以此类推。注意:当索引(不管是正还是负)超过列表的长度,运行会报错(list index: XX out of range)。

output variable为新创建的变量,存储指定索引元素的返回结果,也是一个列表。

2.3、列表的查找

FIND:子命令FIND用于查找列表是否存在指定的元素。

list (FIND )
  如果列表中存在,那么返回在列表中的索引,如果未找到则返回-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}")```

参考:

list — CMake 3.22.2 Documentation
Cmake命令之list介绍 - 简书

————————————————
版权声明:本文为CSDN博主「物随心转」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sinat_31608641/article/details/123101692

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【CMake学习】list使用 的相关文章

  • 安装 EXPORT 需要子项目中的目标

    我正在尝试编写一个 cmake 脚本来安装我正在处理的项目 其中一部分是必要的install EXPORT LIB EXPORTS where LIB EXPORTS是我在各种项目中一直使用的 EXPORT 属性install TARGET
  • 如何在Python中一次比较二维数组的2列与另一个数组的列

    我有两个字符串数组 每个数组有三列 我想比较两个二维数组的前两列 有 3 列和 4000 行 如果它们匹配 那么我需要那些匹配的值 但是我的代码不起作用 这是一个示例 array1 1stcolumn 2ndColumn 3rdColumn
  • 为 CMake 中的子目录生成“干净”目标

    我想生成一个clean子目录的目标 我的项目结构是这样的 app A B lib A B C 有时我只想在 app A 上运行干净 并且不想清理库 是否可以告诉 CMake 生成clean每个目录的目标 或者像这样的自定义目标应用程序清理哪
  • 这段代码中list[:]的含义是什么? [复制]

    这个问题在这里已经有答案了 这段代码来自Python的文档 我有点困惑 words cat window defenestrate for w in words if len w gt 6 words insert 0 w print wo
  • cmake 包括其他目录中的 h 文件

    我在 cmake 项目下进行测试时遇到问题 我的项目是这样安排的 TerrainMap PointAccumulator heightQuadGrid Test 在 TerrainMap 目录中 CMakeLists txt 文件简单地概述
  • 将多列列表拆分为单独的行

    我有一个像这样的数据框 df pd DataFrame key 1 2 3 4 col1 apple orange pineapple guava orange apple col2 087 799 681 078 816 018 key
  • 如何使用包含 \n 的 .txt 创建一维列表?

    我想读取一个文本文件并将文件的每个元素放入一个列表中 而不是为文件中的每一行都有一个单独的列表 例如 如果文件是 你好我的名字 Is Joe 我希望列表是 你好 我的名字是 Joe 而不是 你好 我的名字 是乔 这是我到目前为止所拥有的 d
  • 在cmake中设置PKG_CONFIG_PATH

    我已经在本地构建了 opencv 并将其安装到本地目录 不是系统默认目录 opencv pc存在于该本地文件夹中的 pkgconfig 文件夹下 我怎样才能找到这个opencv pc来自 cmake 因为我想从我的程序链接并包含 openc
  • 如何将 gnatmake/gnatbind/gnatlink 集成到 C/Ada 代码的 CMake 文件中?

    我用几种语言 C C Fortran77 Fortran90 编写了代码 并且可以使用 CMake 编译它 没有任何问题 效果很完美 现在 我想在用 C 编写的 main 中添加一些 Ada 函数 并且我想通过 CMake 编译它 鉴于我无
  • 向前和向后迭代

    我们有一个双端结构列表 例如LinkedList 我需要向前和向后迭代元素 例如 向前 4 次 然后向后 2 次 然后向前 5 次 在 C 中它将是 iter iter iter 在 Rust 中 我只看到 next and rev 这很不
  • CMake 创建可执行文件时未定义的引用

    我是 CMake 新手 我正在尝试编译我的项目 该项目创建了一些静态库和一些可执行文件 下面是我拥有的文件结构的示例 PROJECT SRC 子项目 1该文件夹的 cpp 所有源文件 和CMakeLists txt 1 创建静态库 子项目
  • 循环 2 个列表,重复最短的列表,直到最长的列表结束 [重复]

    这个问题在这里已经有答案了 我确信有一种简单而明显的方法可以做到这一点 但我一直在谷歌搜索和阅读文档 但我找不到任何东西 这就是我想要实现的目标 la a1 a2 a3 a4 lb b1 b2 result a1 b1 a2 b2 a3 b
  • 使用 CMake 对 SDL 的未定义引用

    我正在使用 SDL v1 2 15 7 和 CMake 3 2 1 开发一个项目 在 h 文件中我添加了 include
  • 对 Python 列表元素进行分组

    我有一个 python 列表 如下所示 my list 25 1 0 65 25 3 0 63 25 2 0 62 50 3 0 65 50 2 0 63 50 1 0 62 我想根据以下规则对它们进行排序 1 gt 0 65 0 62 l
  • 检查 cmake 中顺序不正确的可选目标

    我目前正在开发一个使用 cmake 作为构建系统的大型软件项目 但我有一个问题要检查另一个目标是否存在 或将存在 例如 有根 CMakeLists txt 和两个模块 可以选择将其作为子文件夹添加到软件项目中 A CMakeLists tx
  • 获取列表中倒数第二个元素[重复]

    这个问题在这里已经有答案了 我可以通过以下方式获取列表的倒数第二个元素 gt gt gt lst a b c d e f gt gt gt print lst len lst 2 e 有没有比使用更好的方法print lst len lst
  • 将一个列表的元素除以另一个列表的元素

    我有两个清单 比如说 a 10 20 30 40 50 60 b 30 70 110 正如你所看到的 列表 b 由一个列表的元素总和组成 其中 window 2 b 0 a 0 a 1 10 20 30 etc 如何获得另一个列表 该列表由
  • 解压 R 数据框中的列表

    我有一个dataframe其中一个字段包含不同长度的列表 我想将该字段中列表的每个元素提取到其自己的字段中 以便我可以将结果收集到一个很长的字段中dataframe每个列表元素都有一个 id 这是一个例子dataframe dat lt s
  • 创建可以绑定到 DataGrid 的自定义集合

    我在一家建筑公司工作 正在为 3D 建模程序创建一个插件来协助设计 我有一个Building类 以及一个Floor班级 该建筑包含对楼层列表地板的集合 我正在尝试找出以什么为基础楼层列表集合 以便我可以最大限度地减少创建编辑集合的界面所需的
  • CMake 找不到请求的 Boost 库

    既然我已经浏览了其他人的解决方案几个小时 但找不到适合我的问题的正确答案 我想将我的具体问题带给您 我正在尝试使用 CMake 构建 vsomeip 为此 我之前构建了 boost 1 55 但是 我在 CMake 中收到以下错误 The

随机推荐

  • 算法落地思考:如何让智能运维更智能

    嘉宾 王鹏 整理人 西狩xs 出品 CSDN云原生 AIOps是人工智能与运维的结合 xff0c 能够基于已有的运维数据 xff0c 利用人工智能算法 xff0c 通过机器学习的方式帮助企业提升运维效率 xff0c 解决自动化运维无法管理的
  • Python 实现用网页展示多个结果表数据

    Python 实现用网页展示多个表格的数据 前言 一 效果图 二 代码 1 引入库 2 函数定义 3 主程序 前言 实现方法是利用pandas to html 与表格展示的美化相结合 使数据展示更美观 一 效果图 示例 二 代码 本文将使用
  • ubuntu桌面翻转怎么设置成正常?

    有一次在ubuntu设置中 xff0c 脑残在桌面设置里把桌面翻转了 xff0c 虽然有撤回按钮 xff0c 但是桌面翻转了 xff0c 鼠标不受控制 这里介绍一种办法 xff1a Ctrl 43 Alt 43 T 打开终端 xrandr
  • ubuntu20运行VINS-Fusion报错

    ubuntu20运行VINS Fusion报错 Ubuntu20运行VINS Fusion xff0c catkin make报错可以csdn解决 xff1b 但是启动vins node节点的时候 xff0c 就会显示 段错误 xff0c
  • 谷粒学院自学笔记

    谷粒学院自学笔记 day01上午一 MyBatis Plus的入门配置 下午 day02day03day04 Day05Day06Day07Day08Day09Day10Day11Day12Day13Day14Day15Day16Day17
  • CPU 任务调度算法

    摘录自 TSN网络中时间同步精度提升与可靠性研究 董林峰 可参考文章 xff1a https blog csdn net qq 38216239 article details 80374539 多任务操作系统按调度策略的差别可以细分为抢占
  • 安装Docker详细步骤总结

    一 安装Docker 1 下载关于Docker的依赖环境 在Xterm中输入以下代码安装依赖环境 回车 yum y install yum utils device mapper persistent datalvm2 使用yum工具下载
  • MobaXterm连接报错Network error: Connection timed out

    今天打开MobaXterm远程连接我VMware虚拟机的时候出现以下界面 xff0c 问题详情如下 xff1a Network error Connection timed out Session stopped Press lt retu
  • 拉丁超立方抽样

    拉丁超立方 xff08 LHS xff09 适用于样本数量少的情况 xff0c 主要思想是概率分布的分层 xff0c 一层一个样本 xff08 每层的样本是随机的 当且仅当每一行和每一列只有一个样本时 xff0c 才能称为拉丁方格 LHS可
  • 银河麒麟用x11vnc实现远程桌面

    1 安装x11vnc 插入x11vnc的命令 sudo apt span class token operator span get update sudo apt span class token operator span get in
  • Vins-mono细节描述--相机imu外参标定

    vins mono能够在初始化的时候 自动标定相机和imu的外参 这个强大的功能其实并没有想象中那么复杂 一起来看看 1 在vins mono的配置文件中 就可以找到参数 来选择 是否需要估计参数 Extrinsic parameter b
  • lvi-sam的深度匹配策略

    在lvi sam中 xff0c 作者通过视觉处理的时候 xff0c 利用lidar的深度信息 xff0c 得到了更稳定的估计 那在代码里是怎么实现的呢 xff1f 一起来看看看呗 1 在lvi sam的feature tracker nod
  • 路由器硬件组成

    和其他计算机一样 xff0c 运行着baiIOS的路由器也包含了一个 中央处理器 CPU 不同系列和型号的路由器 xff0c CPU也不尽相同 路由器的处理器负责执行处理数据包所需的工作 xff0c 比如维护路由和桥接所需的各种表格以及作出
  • 系统调用与库函数的关系

    系统调用与库函数 1 系统调用 操作系统负责管理和分配所有的计算机资源 为了更好地服务于应用程序 xff0c 操作系统提供了一组特殊接口 系统调用 通过这组接口用户程序可以使用操作系统内核提供的各种功能 例如分配内存 创建进程 实现进程之间
  • FPGA中关于“后仿真正常,但上板测试出错”的问题

    FPGA中关于 后仿真正常 xff0c 但上板测试出错 的问题 求助帖 做的是矩阵键盘的扫描程序 xff0c 后仿真的扫描波形正常 xff1a 但上板子测试的时候用chipscope看扫描的波形却是这个样子的 xff1a 有带佬分析一下是什
  • 一张图搞懂数据结构体系——数据结构脑图

    基本概念 xff1a 数据 xff1a 数据是信息的载体 xff0c 是计算机程序加工的原料 数据元素 xff1a 是数据的基本单位 xff0c 也称元素 结点 数据结构 xff1a 是数据之间的相互关系 xff0c 是数据的组织形式 xf
  • 【入门篇】ESP8266直连智能音箱(天猫精灵)控制智能灯

    本系列博客学习由非官方人员 刘一周 潜心所力所写 xff0c 仅仅做个人技术交流分享 xff0c 不做任何商业用途 如有不对之处 xff0c 请留言 xff0c 本人及时更改 本系列博客内容是通过乐鑫ESP8266直连天猫精灵 xff0c
  • 如何进行CAN总线高效测试?

    CAN总线自BOSCH公司发明以来 xff0c 在汽车通信网络中的应用得到了广泛认可 随着汽车电子技术的发展 xff0c 车上的电子模块越来越多 xff0c 汽车内部的CAN总线节点也随之增多 一般汽车内部CAN节点少则10个 xff0c
  • keil5 中文注释

    keil5 中文注释 点击 Edit gt configuration 如下图 xff1a 在Editor界面中选择Encoding xff0c 如下图 xff0c 这三个均可显示中文注释 xff0c 推荐第一个 xff0c 保持Keil代
  • 【CMake学习】list使用

    添加链接描述 一 介绍 cmake的list命令即对列表的一系列操作 xff0c cmake中的列表变量是用分号 分隔的一组字符串 xff0c 创建列表可以使用set命令 xff08 参考set命令 xff09 xff0c 例如 xff1a