CMake 中的list操作

2023-05-16

Cmake 中定义了一系列的数组操作,使用方法如下


  1. list(INSERT <list> <element_index> <element> [<element> ...])
  2. list(REMOVE_ITEM <list> <value> [<value> ...])
  3. list(REMOVE_AT <list> <index> [<index> ...])
  4. list(REMOVE_DUPLICATES <list>)
  5. list(REVERSE <list>)
  6. list(SORT <list>)
  7. list(APPEND <list> <element> [<element> ...])
  8. list(GET <list> <element index> [<element index> ...] <output variable>)
  9. list(LENGTH <list> <output variable>)

INSERT

cmake_minimum_required(VERSION 2.8)
set(mylist aaa)
list(APPEND mylist bbb ccc)
MESSAGE("${mylist}")
list(LENGTH mylist ll)
#insert with index
list(INSERT mylist 2 xxx)
MESSAGE("${mylist}")

---------output----------

aaa;bbb;ccc
aaa;bbb;xxx;ccc


REMOVE_ITEM

cmake_minimum_required(VERSION 2.8)
set(mylist aaa)
list(APPEND mylist bbb ccc)
MESSAGE("${mylist}")
list(LENGTH mylist ll)
#remove item from list
list(REMOVE_ITEM mylist ccc)
MESSAGE("${mylist}")
---------output----------
aaa;bbb;ccc
aaa;bbb

REMOVE_AT

cmake_minimum_required(VERSION 2.8)
set(mylist aaa)
list(APPEND mylist bbb ccc)
MESSAGE("${mylist}")
list(LENGTH mylist ll)
#remove item from list
list(REMOVE_ITEM mylist 2)
MESSAGE("${mylist}")

---------output----------
aaa;bbb;ccc
aaa;bbb

REMOVE_DUPLICATES

cmake_minimum_required(VERSION 2.8)
set(mylist aaa)
list(APPEND mylist bbb ccc ccc bbb aaa)
MESSAGE("${mylist}")
list(LENGTH mylist ll)
#REMOVE_DUPLICATES
list(REMOVE_DUPLICATES mylist)
MESSAGE("${mylist}")

---------output----------
aaa;bbb;ccc;ccc;bbb;aaa
aaa;bbb;ccc

REVERSE

cmake_minimum_required(VERSION 2.8)
set(mylist aaa bbb ccc)
MESSAGE("mylist: ${mylist}")
list(REVERSE mylist)
MESSAGE("mylist: ${mylist}")

---------output----------
mylist: aaa;bbb;ccc
mylist: ccc;bbb;aaa

SORT

cmake_minimum_required(VERSION 2.8)
set(mylist xxx yyy zzz aaa bbb ccc)
MESSAGE("mylist: ${mylist}")
list(SORT mylist)
MESSAGE("mylist: ${mylist}")

---------output----------
mylist: xxx;yyy;zzz;aaa;bbb;ccc
mylist: aaa;bbb;ccc;xxx;yyy;zzz

APPEND

cmake_minimum_required(VERSION 2.8)
set(mylist aaa bbb ccc)
MESSAGE("mylist: ${mylist}")
list(APPEND mylist xxx yyy zzz)
MESSAGE("mylist: ${mylist}")
set(mylist2 111 222 333)
MESSAGE("mylist2: ${mylist2}")
list(APPEND mylist ${mylist2})
MESSAGE("mylist: ${mylist}")

---------output----------
mylist: aaa;bbb;ccc
mylist: aaa;bbb;ccc;xxx;yyy;zzz
mylist2: 111;222;333
mylist: aaa;bbb;ccc;xxx;yyy;zzz;111;222;333
这里的append有两种,第二种直接append数组的值,同样有效。

GET

cmake_minimum_required(VERSION 2.8)
set(mylist xxx yyy zzz aaa bbb ccc)
MESSAGE("mylist: ${mylist}")
list(GET mylist 0 1 2 sublist)
MESSAGE("mylist: ${sublist}")

---------output----------
mylist: xxx;yyy;zzz;aaa;bbb;ccc
mylist: xxx;yyy;zzz

LENGTH

cmake_minimum_required(VERSION 2.8)
set(mylist xxx yyy zzz aaa bbb ccc)
MESSAGE("mylist: ${mylist}")
list(LENGTH mylist ll)
MESSAGE("mylist: ${ll}")
---------output----------
mylist: xxx;yyy;zzz;aaa;bbb;ccc
mylist: 6
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CMake 中的list操作 的相关文章

随机推荐

  • NumPy、Torch和Tensorflow 代码对比

    深度学习 在深入学习的基本单位上实施初级到高级操作 gt Excerpts 我习惯于为不同的问题创建新的深度学习架构 xff0c 但选择哪个框架 xff08 Keras Pytorch TensorFlow xff09 通常比较困难 由于其
  • 2023年 机器学习常用算法

    01 线性回归 线性回归 xff08 Linear Regression xff09 可能是最流行的机器学习算法 线性回归就是要找一条直线 xff0c 并且让这条直线尽可能地拟合散点图中的数据点 它试图通过将直线方程与该数据拟合来表示自变量
  • STM32上SPI+DMA实现大批量读取flash数据

    最近做项目需要使用SPI 43 DMA xff0c 为了做实验感受DMA传输数据块 xff0c 本人以SPI 43 DMA来读取flash中的数据 网上有很多例程是spi直接读取flash xff0c 无法提高性能 因为只是简单的实验SPI
  • stm32通用定时器1s延时实现LED闪烁

    stm32有很多定时器 xff0c 每种定时器的功能也不尽相同 xff0c 今天学习了如何用通用定时器实现1s延时 xff0c 使LED灯闪烁 xff0c 现总结如下 xff1a 步骤总结 xff1a 使能定时器时钟 gt 配置定时器结构体
  • JDK 中使用js调用java类、方法

    最近研究阅读这个APP 其主要功能就是通过一个个书源 从而实现移动端阅读的体验 比如说某些在线小说阅读网站 会加上相应的广告 从而影响用户阅读体验 于是阅读这个APP就是做了类似净化阅读体验 但是小说阅读网站千千万万 如果去适配每个小说阅读
  • Spring项目在tomcat启动时调用action

    1 实现ServletContextListener接口 添加 64 WebListener注解 2 按照示例写代码 xff1a 第一个是开启时 xff0c 第二个是销毁时
  • ubuntu16.04安装opencv3.4

    参考blog https blog csdn net u013066730 article details 79411767 直接进行 完全没问题 sudo apt get install build essential libgtk2 0
  • 使用switch-case语句输出成绩等级

    问题描述 xff1a 输入一个0 100范围内发分数 xff0c 在不同的等级范围内输出不同的值 xff0c 要求使用switch case控制 0 60 等级为E 60 70 等级为D 70 80 等级为C 80 90 等级为B 90 1
  • 输出图案(六)---输出空心矩形

    输入矩形的宽 xff0c 高 xff0c 输出该空心矩形 xff0c 用 来进行表示 参考代码1 xff1a span class hljs comment include lt stdio h gt span span class hlj
  • C语言中交换两个数的方法

    问题描述 xff1a 程序中有两个数a b 其中a 61 4 b 61 5 xff0c 现在希望交换两个数的值 xff0c 使得a 61 5 b 61 4 在这里我总结了一下目前我已经掌握的C语言中交换两个数的方法 xff0c 主要如下几种
  • 输出平行四边形图案(多种方案)

    问题描述 xff1a 使用 在控制台打印平行四边形 例如 xff1a 平行四边形中最长的一行输出的 是5个 xff0c 则平行四边为 xff1a span class hljs bullet span span class hljs emp
  • 自己实现strcat函数

    问题描述 xff1a 自己实现一个MyStrcat函数 xff0c 要和C语言库函数的strcat函数完成同样的功能 问题分析 xff1a 首先我们要了解一下strcat函数它到底做了什么事情 1 函数原型 char strcat char
  • 简易文件打包程序

    对指定目录下面的文件进行打包 简易解包程序参考博客另外一篇文章 xff1a http blog csdn net yi ming he article details 77689453 打包方式 xff1a 把目录下面的文件名 xff0c
  • 简易解包程序

    对压缩包进行解压 简易压缩程序请参考博客的另外一篇文章 xff1a http blog csdn net yi ming he article details 77689405 解包方式 xff1a 根据打包建立的索引表 xff0c 找到对
  • linux 挂载错误Transport endpoint is not connected

    mount了mfs后 xff0c 重新挂载之后 xff0c 出现如下错误 xff1a usr local mfs bin mfsmount H 192 168 103 101 mnt fuse bad mount point 96 mnt
  • 新字体的永久注册

    CString GetCurrentModuleDir TCHAR szPath MAX PATH 43 1 61 0 if 0 61 61 GetModuleFileName HMODULE amp ImageBase szPath MA
  • yolov5/v7/v8自动检测多个文件夹及截取锚框

    目前yolo仅支持检测图片或单个文件夹 xff0c 但在很多时候需要对成百上千个文件夹中图片进行检测 xff0c 再根据得到的位置信息txt文件来截取图片 xff0c 如何一步完成呢 xff0c 详情见下文 在detect py中将save
  • 带参数的宏定义、函数与内联函数

    文章目录 前言一 宏定义1 基本用法2 带参数的宏定义 二 函数1 定义与声明2 调用 三 内联函数 inline总结 前言 在实际项目开发 xff0c 尤其是嵌入式软件项目中 xff0c 经常可以看到大量宏定义的分布 xff0c 其中又多
  • C++语言为什么跨平台?

    xfeff xfeff 现在主流的手机平台很多 xff0c 比如 xff1a Windows开发的Windows Phone xff08 WP 34 X 34 xff09 Apple 苹果公司 开发的ios xff0c Google 谷歌
  • CMake 中的list操作

    Cmake 中定义了一系列的数组操作 xff0c 使用方法如下 list INSERT lt list gt lt element index gt lt element gt lt element gt list REMOVE ITEM