一、介绍

遍历容器的所有元素,它有四种形式

  1. 遍历list所有元素
  2. 从零开始到目标结果,stop不可为负数,默认步长为1
  3. 存在起始位置和截至位置的跳动,左右都是闭区间,步长可指定,默认为1
  4. 多集合的并集

二、遍历list所有元素

语法

foreach(<loop_var> <items>)<command>
endeach()

举个例子

set(LIST_SRC a.cpp b.cpp c.cpp)
foreach(item ${LIST_SRC})message(STATUS "item is ${item}")
endforeach()

打印

三、从零开始到目标结果(包括这个目标结果),stop不可为负数,默认步长为1,

语法

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

举个例子

foreach(i RANGE 5)message(STATUS "i = ${i}")
endforeach()

打印0-5

四、存在起始位置和截至位置的跳动,左右都是闭区间,步长可指定,默认为1

语法

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

举个例子

foreach(j RANGE 3 6)message("j = ${j}")
endforeach()foreach(k RANGE 3 6 2)message("k = ${k}")
endforeach()

打印

​五、多集合的并集

  • LISTS可以认为是一个有名的集合,入set(A a b c)
  • ITEMS可以认为是一个匿名的集合,如a b c
    语法如下.
foreach(<loop_var> IN [LISTS [<lists>]] [ITEMS [<items>]])

举个例子

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()foreach(i IN ITEMS A B C D E)message("i = ${i}")
endforeach()

打印

六、一个特殊的用法ZIP_LISTS

foreach(<loop_var>... IN ZIP_LISTS <lists>)

实例,遍历两个list

set(English one two three four)set(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()

打印

参考:

foreach — CMake 3.22.2 Documentation

cmake foreach - faithlocus - 博客园

cmake命令之foreach相关推荐

  1. 【CMake】CMake 引入 ( Android NDK 构建脚本 | CMake 命令手册 )

    文章目录 一.Android NDK 构建脚本 二.CMake 构建脚本示例 三.CMake 命令手册 1.CMake 脚本命令 2.CMake 工程命令 该系列博客的应用场景是 Android St ...

  2. CMake命令大全——CMake构建系统的骨架

    转自:http://www.cnblogs.com/coderfenghc/archive/2012/06/16/CMake_ch_01.html#2996205) CMD#1: add_custom ...

  3. 【Cmake】执行cmake命令时报错:No XSLT processor found

    一.问题描述 在ubuntu中,在生成Doc(文档)中,执行cmake命令时报错:No XSLT processor found 二.原因查找 google该错误信息,原因是确实ubuntu中没有安装 ...

  4. 【CMake】Android Studio 中使用 CMake 编译单个 C++ 源文件 ( 常用的 CMake 命令解析 )

    文章目录 一.Android Studio 中使用 CMake 编译单个 C++ 源文件 二.cmake_minimum_required 命令设置最小 CMake 版本 三.project 命令设置 ...

  5. linux下cmake命令行,深入理解CMake(1): CMake命令行参数

    初衷 CMake能用来编写跨平台(cross-platform)的构建规则,通过这些规则来调用各个平台的编译器.链接器,生成各个目标(静态库,静态库,或者可执行). 我第一个接触的大型C++项目是Op ...

  6. Qt CMake命令参考

    Qt CMake命令参考 CMake命令参考 Qt5 :: Core Qt5 :: DBus Qt5 :: Linguist工具 Qt5 :: RemoteObjects Qt5 :: Widgets ...

  7. cmake命令的python库的位置参数-DTORCH_PATH

    https://blog.csdn.net/qq_35590091/article/details/104557020 我主要用的是这文章里对于cmake命令的python库的位置参数-DTORCH_ ...

  8. CMake命令之add_custom_comand 和 add_custom_target

    一.背景 在很多时候,需要在cmake中创建一些目标,如clean.copy等等,这就需要通add_custom_target来指定.而add_custom_command则可以用来完成对add_cu ...

  9. android studio 使用CMAKE,在terminal终端里敲cmake命令

    原文地址 前言 之前,每次需要边写C++代码的时候,我的内心都是拒绝的.  1. 它没有代码提示!!!这意味着我们必须自己手动敲出所有的代码,对于一个新手来说,要一个字母都不错且大小写也要正确,甚至要 ...

最新文章

  1. Java排序算法:冒泡排序
  2. python矩阵处理库_用于处理非常大的矩阵的Python库
  3. 预印本平台(arXiv.org) — 免费论文库,开心学习吧~~~
  4. 关于Java基础需要注意的点
  5. 53、shell常用快捷方式
  6. weblogic命令行操作
  7. esp8266 rtos 开发环境 ubuntu_Ubuntu快速搭建C++开发环境(VS Code编辑器)
  8. dvd在线租赁问题 matlab,DVD在线租赁问题.doc
  9. mysql md 123456_MySQL修炼之路四
  10. 外星人进化_外星人真的比人类强大吗?科学家给出几种猜想,你认同吗?
  11. cf12E Start of the season(构造,,,)
  12. Chrome谷歌浏览器启用flash插件
  13. Mybatis collection 递归查询并自动装填所有子节点(多参数查询传入参数方法)
  14. 图相关论文阅读与总结
  15. (转)男人的梦想之野性篇 什么是真正的越野车
  16. java安装_Java开发人员应该知道的7种新工具
  17. java 坑爹的黑店,大土地神系统
  18. 回车符,换行符的区别
  19. 图书条形码跟ISBN号互相转换的类(续)
  20. 【亲测】PHP进销存源码 ERP多仓库管理系统 网络版手机端+小程序版进销存 二次开发

热门文章

  1. MVCC能保证不产生幻读吗
  2. txt转shp,省标格式txt格式转shp批量转换
  3. Java 中的泛型是什么,它有什么作用?(十五)
  4. msec是毫秒; usec是微秒
  5. 选择性注意中的“salience map”的作用是什么?
  6. 利用MySQL实现一个类似美团外卖的外卖订单的数据库管理系统
  7. tyvj 2075 借教室 题解
  8. 聊城市普通话水平测试软件音频,聊城市普通话水平测试培训-聊城市教师教育网.ppt...
  9. VS2022配置OpenCV 4.3.0报错解决办法
  10. 网络信息安全运营方法论 (上)