cmake foreach 条件判断

server/2025/1/23 3:53:35/

格式

foreach(<loop_var> <items>)<commands>
endforeach()

其中<items>是由空格或空白分隔的项目列表。foreach和匹配的endforeach之间的所有命令都被记录下来而不被调用。一旦计算完endforeach,将为<items>中的每个项目调用一次记录的命令列表。在每次迭代开始时,变量<loop_var>将被设置为当前项的值。<loop_var>的作用域被限制为循环作用域,不需要像C语言一样单独定义,endforeach结束变量<loop_var>的作用域。

数字迭代循环

foreach(<loop_var> RANGE <stop>)
foreach(<loop_var> RANGE <start> <stop> [<step>])

LISTS查找

foreach(<loop_var> IN [LISTS [<lists>]] [ITEMS [<items>]])

一般的编程语言只可以查找一个list,cmake 可以查找成多个list合并查找,如:

set(A 0;1)
set(B 2 3)
set(C "4 5")
set(D 6;7 8)
set(E "")
foreach(X IN LISTS A B C D E)message(STATUS "X=${X}")
endforeach()

结果:

-- X=0
-- X=1
-- X=2
-- X=3
-- X=4 5
-- X=6
-- X=7
-- X=8

多组LISTS同时查找

list(APPEND English one two three four)
list(APPEND Bahasa satu dua tiga)foreach(num IN ZIP_LISTS English Bahasa)message(STATUS "num_0=${num_0}, num_1=${num_1}")
endforeach()foreach(en ba IN ZIP_LISTS English Bahasa)message(STATUS "en=${en}, ba=${ba}")
endforeach()

结果:

list(APPEND English one two three four)
list(APPEND Bahasa satu dua tiga)foreach(num IN ZIP_LISTS English Bahasa)message(STATUS "num_0=${num_0}, num_1=${num_1}")
endforeach()foreach(en ba IN ZIP_LISTS English Bahasa)message(STATUS "en=${en}, ba=${ba}")
endforeach()

可以看到与上面的LISTS查找方式不一样的时ZIP时多个LIST同时查找,而LISTS时3按顺序查找。


http://www.ppmy.cn/server/160640.html

相关文章

WebSocket知识点笔记(一)

WebSocket ​ WebSocket是一种在单个TCP连接上进行全双工通信的协议。它使得客户端和服务端之间的消息传递更加高效&#xff0c;允许服务器主动向客户端推送数据。 一.WebSocket全双工通信 WebSocket提供了真正的双向通信&#xff0c;客户端和服务端可以同时发送和接收消息 …

JDBC实验测试

一、语言和环境 实现语言&#xff1a;Java。 环境要求&#xff1a;IDEA2023.3、JDK 17 、MySQL8.0、Navicat 16 for MySQL。 二、技术要求 该系统采用 SWING 技术配合 JDBC 使用 JAVA 编程语言完成桌面应用开发。 三、功能要求 某电商公司为了方便客服查看用户的订单信…

解决conda create速度过慢的问题

问题 构建了docker容器 想在容器中创建conda环境&#xff0c;但是conda create的时候速度一直很慢 解决办法 宿主机安装的是anaconda 能正常conda create,容器里安装的是miniforge conda create的时候速度一直很慢&#xff0c;因为容器和宿主机共享网络了&#xff0c;宿主机…

PHP语言的网络编程

PHP语言的网络编程 网络编程是现代软件开发中不可或缺的一部分&#xff0c;尤其是在日益发展的互联网时代。PHP&#xff08;Hypertext Preprocessor&#xff09;是一种广泛使用的开源脚本语言&#xff0c;专门用于Web开发。它的灵活性、易用性以及强大的社区支持使得PHP在网络…

Java连接TDengine和MySQL双数据源

git文件地址&#xff1a;项目首页 - SpringBoot连接TDengine和MySQL双数据源:SpringBoot连接TDengine和MySQL双数据源 - GitCode 1、yml配置 spring:datasource:druid:mysql:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/testusername: roo…

基于OpenCV和Python的人脸识别系统_django

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 管理员登录 管理员功能界面 用户管理 公告信息管理 操作日志管理 用户登录界面 用户…

Kafka 和 MQ 的区别

1.概述 1.1.MQ简介 消息中间件&#xff0c;其实准确的叫法应该叫消息队列&#xff08;message queue&#xff09;&#xff0c;简称MQ。其本质上是个队列&#xff0c;有FIFO的性质&#xff0c;即first in first out&#xff0c;先入先出。 目前市场上主流的MQ有三款&#xff…

ESP8266-01S的TCP/IP相关的AT指令

目录 1、ATCIPSTATUS——查询网络连接信息 2、ATCIPDOMAIN——域名解析功能 3、ATCIPSTART建立TCP连接、UDP传输、SSL连接 4、ATCIPSSLSIZE——设置SSl buffer容量 5、ATCIPSEND——发送数据 6、ATCIPSENDEX——发送数据&#xff1b;达到设置长度或者遇到字符"\0&quo…