cmake列表

 目录

cmake多行注释

求list长度

demo 

获取list的值

demo

 插入list

demo

 追加list

demo

查找列表中的字符

demo

删除list

list向前删除和向后删除数据

demo

字符串反转

demo

特殊操作


Readinglist(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>)Searchlist(FIND <list> <value> <out-var>)Modificationlist(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> [...])Orderinglist(REVERSE <list>)list(SORT <list> [...])

cmake多行注释

#[==[
sadf
asdafg
asdafg
]==]

#[==[

]==]

这个是多行注释的写法中间的两个等号可以换成其他的,但是一定要和后面的字符匹配才可以.

求list长度

第一个参数是关键字 第二个参数是list,第三个参数输出的长度值

list(LENGTH <list> <out-var>)

demo 

先设置三个list,list可以使用分号区分也可以使用空格区分,注意使用空格区分不能使用双引号,要不会识别为一个字符串,list长度为了,分号没有限制.

message("---------------------------------------------")
#[==[
sadf
asdafg
asdafg
]==]set(listVar0 "1;2;3;4;5")
set(listVar1 "1 2 3 4 5")
set(listVar2 1 2 3 4 5)
set(listVar3 1;2;3;4;5)
list(LENGTH listVar0 outVar0)
list(LENGTH listVar1 outVar1)
list(LENGTH listVar2 outVar2)
list(LENGTH listVar3 outVar3)
message("outVar0 = ${outVar0}\n""outVar1 = ${outVar1}\n""outVar2 = ${outVar2}\n""outVar3 = ${outVar3}\n")

 

获取list的值

 list(GET <list> <element index> [<index> ...] <out-var>)

第一个参数是必填的,这个GET是获取的意思,第二个参数是list,第三个变量是index是list的下标,而且可以不只是一个,第四个参数是输出,如果是两个index输出的是一个列表.如果超出会报错,如果为负数会从后往前数,看下面的例子,list中有5个元素,所以范围是-5到4.

demo

list(GET listVar0 0 outVar0)
list(GET listVar0 0 3 outVar1)
list(GET listVar0 -4 outVar2)
list(GET listVar0 0 6 outVar3)
message("outVar0 = ${outVar0}\n""outVar1 = ${outVar1}\n""outVar2 = ${outVar2}\n""outVar3 = ${outVar3}\n")

 

 插入list

list(INSERT listVal index item[item...])

第一个参数是关键字插入,第二个是插入的位置,第三个参数是插入的内容,可以是字符串也可以是list

demo

第一行代码是插入三个字符,

第二行代码是插入一个字符串

第三行代码是插入两个字符

第四行代码是从后往前数插入,

第五行代码是插入一个list,插入list必须使用${}如果直接使用list名字,会把list名字当成字符串处理的.

list(INSERT listVar0 0 "H" "E" "X")
list(INSERT listVar2 1 "asd")
list(INSERT listVar3 2 123 456)
list(INSERT listVar3 -3 "poi")
list(INSERT listVar3 -1 ${listVar0})
message("listVar0 = ${listVar0}\n""listVar2 = ${listVar2}\n""listVar3 = ${listVar3}\n")

 

 追加list

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

APPEND:向后追加

PREPEND :向前追加

第一个参数是关键字,第二个是追加的列表,第三个参数是追加的内容,内容可以是单个字符多个字符,字符串或者列表,列表需要使用${}包含.

demo

set(listVar0 "1;2;3;4;5")
set(listVar1 "1;2;3;4;5")
set(listVar2 1 2 3 4 5)
set(listVar3 1;2;3;4;5)list(APPEND listVar0 "c" "m" "k" "e")
list(PREPEND listVar1 "Hello")
list(APPEND listVar3 ${listVar2})
message("listVar0 = ${listVar0}\n""listVar1 = ${listVar1}\n""listVar3 = ${listVar3}\n")

 

查找列表中的字符

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

list查找是能查找单个字符,或者单个字符串,如果没找会返回-1

demo

第一行代码,第二行代码查找字符和字符串都可以找到,第三行代码查找没找到会返回-1,第四行代码查找list但是返回-1. 

set(listVar0 "1;2;3;4;5")
set(listVar1 "1;12;3;4;5")
set(listVar2 1 2 3 4 5)
set(listVar3 1;2;3;4;5)list(FIND listVar0 "2" outVar0)
list(FIND listVar1 "12" outVar1)
list(FIND listVar2 "9" outVar2)
list(FIND listVar3 "1;2" outVar3)
message("outVar0 = ${outVar0}\n""outVar1 = ${outVar1}\n""outVar2 = ${outVar2}\n""listVar3 = ${listVar3}  outVar3 = ${outVar3}\n")

删除list

  list(REMOVE_ITEM <list> <value>...)list(REMOVE_AT <list> <index>...)list(REMOVE_DUPLICATES <list>)

REMOVE_ITEM 移除list的内容匹配的是内容

REMOVE_AT 移除的list的下标

REMCOVE_DUPLICATES 移除的是重复的内容

第一行代码是移除字符1和字符2

第二行代码是移除下标3和下标4

第三行代码是移除listVar2重复的内容

第四行代码是是移除字符1和字符7,但是没有字符7所以只移除了字符1,但是不会报错

第五行代码是移除下标3和下标9,有下标3,但是没有下标9所以会报错.

set(listVar0 "1;2;3;4;5")
set(listVar1 "1;12;3;4;5")
set(listVar2 1 2 3 1 5)
set(listVar3 1;2;3;4;5)
set(listVar4 1;2;3;4;5)
list(REMOVE_ITEM listVar0 "1" "2")
list(REMOVE_AT listVar1 "3" "4")
list(REMOVE_DUPLICATES listVar2)
list(REMOVE_ITEM listVar3 "1" "7")
list(REMOVE_AT listVar4 "3" "9")
message("listVar0 = ${listVar0}\n""listVar1 = ${listVar1}\n""listVar2 = ${listVar2}\n""listVar3 = ${listVar3}\n""listVar4 = ${listVar4}\n")

 

list向前删除和向后删除数据

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

POP_BACK是从后面删除数据

POP_FRONT是从先面删除数据

第二个参数是删除的list

第三个参数是删除的内容,一个参数就删除一个两个参数就删除两个

和c++的操作类似.

demo

set(listVar0 "1;2;3;4;5")
set(listVar1 "1;12;3;4;5")
set(listVar2 1 2 3 1 5)
set(listVar3 1;2;3;4;5)
set(listVar4 1;2;3;4;5)
message("listVar0 = ${listVar0}\n""listVar1 = ${listVar1}\n""listVar2 = ${listVar2}\n""listVar3 = ${listVar3}\n"# "listVar4 = ${listVar4}\n")
list(POP_FRONT listVar0 outVar0)
list(POP_FRONT listVar1 outVar1 outVar2)
list(POP_BACK listVar2 outVar3)
list(POP_BACK listVar3 outVar5 outVar6)message("--------POP_FRONT-----------------\n""listVar0 = ${listVar0}\n""outVar0 = ${outVar0}\n""--------POP_FRONT-----------------\n""listVar1 = ${listVar1}\n""outVar1 = ${outVar1}\n""outVar2 = ${outVar2}\n""--------POP_BACK-----------------\n""listVar2 = ${listVar2}\n""outVar3 = ${outVar3}\n""--------POP_BACK-----------------\n""listVar3 = ${listVar3}\n""outVar5 = ${outVar5}\n""outVar6 = ${outVar6}\n"
)

 

字符串反转

  list(REVERSE <list>)list(SORT <list> [COMPARE method] [CASE case] [OREDER order])
  • REVERSE是逆序
  • SORT是排序

method必须是如下之一:比较的方法

  • STRING
  • FILE_BASENAME  #比较的是路径
  • NATURAL和STRING类似,只不过连续的数字需要按照数字的大小来排序

CASE是SENSITIVE(大小写敏感)或者INSENSITIVE(大小写不敏感)

ORDER是ASCENDING(升序)或者是DESCENDING(降序)

demo

message("-------------------------------")
set(listVar "1;2;3;q;w;e;r;Q;W;E;R")
message("listVar = ${listVar}\n")
list(SORT listVar)
message("listVar = ${listVar}\n")
list(SORT listVar COMPARE STRING)
message("COMPARE STRING: listVar = ${listVar}\n")
list(SORT listVar COMPARE NATURAL)
message("COMPARE NATURAL: listVar = ${listVar}\n")
list(SORT listVar CASE SENSITIVE)
message("CASE SENSITIVE: listVar = ${listVar}\n")
list(SORT listVar CASE INSENSITIVE)
message("CASE INSENSITIVE: listVar = ${listVar}\n")
list(SORT listVar COMPARE NATURAL CASE SENSITIVE)
message("COMPARE NATURAL CASE SENSITIVE: listVar = ${listVar}\n")
list(SORT listVar COMPARE NATURAL CASE INSENSITIVE)
message("COMPARE NATURAL CASE INSENSITIVE: listVar = ${listVar}\n")
message("CASE SENSITIVE: listVar = ${listVar}\n")
list(SORT listVar ORDER ASCENDING)
message("ORDER ASCENDING: listVar = ${listVar}\n")
list(SORT listVar ORDER DESCENDING)
message("ORDER DESCENDING: listVar = ${listVar}\n")

 

特殊操作

在设置[为字符时需要注意这个可能会把两个字符组合成一个字符的. 


message("-------------------------------")
set(noBrackets "a_a" "b_b")
set(withBrackets "a[a" "b]b")list(LENGTH noBrackets lenNo)
list(LENGTH withBrackets lenWith)list(GET noBrackets 0 firstNo)
list(GET withBrackets 0 firstWith)message("No brackets: Length = ${lenNo} --> first element = ${firstNo}")
message("with brackets: Length = ${lenWith} --> first element = ${firstWith}")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/15033.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++图形开发(11):小球碰到方块的判定

文章目录 1.有哪些情况&#xff1f;1.1 小球在方块左侧1.2 小球在方块上面1.3 小球在方块右侧 2.解决 1.有哪些情况&#xff1f; 今天来实现下小球碰到方块的判定 那么我们首先要明确的就是在什么时候&#xff0c;小球会碰到方块&#xff1f; 1.1 小球在方块左侧 第一个就是…

SendGrid 无法注册,Create Account 按钮灰色无法点击

问题描述&#xff1a; 注册SendGrid的时候&#xff0c;账号密码都输好了&#xff0c;就是没办法点【Create Account】。 解释思路&#xff1a; 其实空白处有一个reCAPTCHA 验证码&#xff0c;但是被隐去了。所以我们的思路是如何让网页中的reCAPTCHA 验证码顺利显示出来。 问…

如何使用 OpenCV 去除图像背景

文末附源代码的免费下载链接 在本教程中,我们将学习如何使用 OpenCV 使用一种名为背景减法的技术来去除视频中的背景。 背景扣除是计算机视觉中用于检测视频中移动物体的常用技术。对于安全、监视、交通监控等来说,这是一种非常有用的技术。 背景减法的基本思想是通过从前景…

Socket编程接口API并实现简单的TCP网络编程

#include <sys/types.h> #include <sys/socket.h> socket()创建套接字&#xff0c;成功返回套接字的文件描述符&#xff0c;失败返回-1 domain: 设置套接字的协议簇&#xff0c; AF_UNIX AF_INET AF_INET6 type: 设置套接字的服务类型 SOCK_STREAM SOCK_DGRAM prot…

怎么用爱问转换工具在线拆分PDF文件

我们平时在工作中会用到很多PDF文件&#xff0c;有的PDF文件内容很多&#xff0c;里面也有许多分类类别&#xff0c;其实对于这种内容多的PDF文件&#xff0c;可以使用拆分的方式&#xff0c;来获取自己需要的材料&#xff0c;那么&#xff0c;如何快速拆分PDF文件呢&#xff1…

Mybatis-xml和动态sql

xml映射方式 除了之前那种 select(语句) public void ...();通过注解定义sql语句&#xff0c;还可以通过xml的方式来定义sql语句 注意 在resource创建的是目录&#xff0c;要用斜线分隔 创建出文件后 先写约束 <?xml version"1.0" encoding"UTF-8"…

HAProxy负载均衡集群

目录 1.1 常用的负载均衡调度器 1.2 Haproxy的简介 2.LVS、Nginx、HAproxy的区别&#xff1a; nginx LVS HAProxy 3.Haproxy搭建 Web 群集 3.1 haproxy 服务器部署 1.关闭防火墙&#xff0c;将安装Haproxy所需软件包传到/opt目录下 2.编译安装 Haproxy 3.Haproxy服务…

event.stopPropagation()和event.preventDefault()之间的联系

目录 阻止事件冒泡&#xff0c;阻止默认事件&#xff0c;event.stopPropagation()和event.preventDefault()&#xff0c;return false的区别 今天来看看前端的冒泡和事件默认事件如何处理 1.event.stopPropagation()方法 这是阻止事件的冒泡方法&#xff0c;不让事件向documen上…

羊驼再度进化,“长颈鹿版”LongLLaMA 来啦,上下文长度冲向 100K ,性能不减

文 | 小戏、ZenMoore 要说当下制约大模型释放更大规模潜力的桎梏&#xff0c;除了机器幻觉&#xff0c;肯定当属受限的上下文长度&#xff0c;前两天微软的 LongNet 正将 Transformer 的上下文长度扩展到夸张的 10 亿量级&#xff0c;这两天撑起了开源大模型一片天的 LLaMA 家族…

Linux 学习记录48(QT篇待完成)

Linux 学习记录48(QT篇) 本文目录 Linux 学习记录48(QT篇)一、1.2. 二、三、四、练习1. 自制文本编辑器(0. main.cpp(1. txt_window.h(2. txt_window.cpp 2. 登录界面完善 一、 1. 2. 二、 三、 四、 练习 1. 自制文本编辑器 (0. main.cpp #include "txt_window.h…

自定义对象作为HashMap的键,同时重写hashCode和equals方法

如果要将自定义类的实例 作为HashMap的 键&#xff0c;必须重写hashCode和equals方法 简单版本&#xff0c;看不懂看后面复杂版本解释 复杂版本解释 当我们用 HashMap存入自定义的类时&#xff0c;如果不重写这个自定义类的equals和hashCode方法&#xff0c;得到的结果会和我们…

MySQL库表操作作业

创建数据库 mysql> create database Market; mysql> use Market; 创建表和约束 mysql> create table customers(c_num int(11) primary key not null UNIQUE Key auto_increment , -> c_name varchar(50), -> c_city varchar(50), -> c_birth datetime…