[CMake教程] 循环

这篇具有很好参考价值的文章主要介绍了[CMake教程] 循环。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作为一个编程语言,CMake也少不了循环流程控制,他提供两种循环foreach()while()

一、foreach()

基本语法:

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

其中<items> 可以是由分号或空格分隔的项目列表,也可以是一个列表变量。每次迭代,<loop_var> 将被赋值为当前项目的值。

set(item1 a)
set(item2 b)
set(item3 c)
set(item4 d)
foreach(var ${item1} ${item2} ${item3} ${item4})
    message("var = ${var}")
endforeach()
----------------
var = a
var = b
var = c
var = d
var = e

set(myList 1 2 3 4)
foreach(var ${myList})
    message("var = ${var}")
endforeach()
----------------
var = 1
var = 2
var = 3
var = 4

foreach() 还有一些进阶的用法:

  •   foreach(<loop_var> RANGE <stop>)
    

    使用 <stop> 指定迭代范围(<stop> > 0),相当于有一个迭代变量i,迭代范围为 [0, <stop>]

    foreach(var RANGE 5)
        message("var = ${var}")
    endforeach()
    ----------------
    var = 0
    var = 1
    var = 2
    var = 3
    var = 4
    var = 5
    
  •   foreach(<loop_var> RANGE <start> <stop> [<step>])
    

    指定迭代范围的开始(<start>)和结束(<stop>),并可选指定步长(<step>)。

    foreach(var RANGE 2 10 2)
        message("var = ${var}")
    endforeach()
    ----------------
    var = 2
    var = 4
    var = 6
    var = 8
    var = 10
    
  •   foreach(<loop_var> IN [LISTS [<lists>]] [ITEMS [<items>]])
    

    它和foreach(<loop_var> <items>)的用法基本一样,唯一不同的是,用LISTS指定列表后不需要用 ${}对列表进行取值。

    set(myList 1 2 3 4)
    foreach(var IN LISTS myList)
        message("var = ${var}")
    endforeach()
    ----------------
    var = 1
    var = 2
    var = 3
    var = 4
    
  •   foreach(<loop_var>... IN ZIP_LISTS <lists>)
    

    CMake 3.17引入

    这个用法可以并行遍历多个列表,可以发现<loop_var>后面有... ,所以他可以传入多个变量以接受多个列表的遍历,传入多个变量时,变量的数量应该和列表的数量相同。

    但如果只传入一个变量,将会把对应列表的元素存入到 <loop_var>_N 中,如下:

    set(myList0 a b c d)
    set(myList1 1 2 3 4)
    
    # 传入多个变量
    foreach(var0 var1 IN ZIP_LISTS myList0 myList1)
        message("var0 = ${var0}, var1 = ${var1}")
    endforeach()
    ----------------
    var1 = a, var2 = 1
    var1 = b, var2 = 2
    var1 = c, var2 = 3
    var1 = d, var2 = 4
    
    # 传入一个变量
    set(myList0 a b c d)
    set(myList1 1 2 3 4)
    foreach(var IN ZIP_LISTS myList0 myList1)
        message("var_0 = ${var_0}, var_1 = ${var_1}")
    endforeach()
    ----------------
    var_0 = a, var_1 = 1
    var_0 = b, var_1 = 2
    var_0 = c, var_1 = 3
    var_0 = d, var_1 = 4
    

二、while()

基本语法:

while(<condition>)
	<commands>
endwhile()

如果 <condition> 为真,则执行循环,示例如下:(列表操作详见CMake列表 - list)

list(LENGTH myList listLen)
while(listLen GREATER 0)
    message("myList = ${myList}")
    list(POP_FRONT myList)
    list(LENGTH myList listLen)
endwhile()
----------------
myList = 1;2;3;4
myList = 2;3;4
myList = 3;4
myList = 4

三、break() 与 continue()

与绝大多数编程语言一样,CMake也可以通过 break() 跳出循环,通过 continue() 结束本次循环并继续下次循环。文章来源地址https://www.toymoban.com/news/detail-698621.html

set(myList 1 2 3 4 5 6 7)
foreach(var IN LISTS myList)
    math(EXPR expr ${var}%2)
    if(expr EQUAL 0)
        continue()
    endif()
    if(${var} GREATER 5)
        break()
    endif()
    message("var = ${var}")
endforeach()
----------------
var = 1
var = 3
var = 5

到了这里,关于[CMake教程] 循环的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python循环语句——continue和break

    在Python编程中,循环是常见的控制流语句,它允许我们重复执行一段代码,直到满足某个条件为止。而在循环中,continue和break是两个非常重要的控制语句,它们可以帮助我们更加灵活地控制循环的行为。 continue语句用于跳过当前循环的剩余部分,并立即开始下一次迭代。它常

    2024年02月20日
    浏览(44)
  • kotlin forEach循环return/break

    kotlin forEach循环return/break   [0, 1, 2] [0, 1, 2, 3]     kotlin forEachIndexed arrayListOf<String>_zhangphil的博客-CSDN博客 Python for循环中的zip_python zip函数用于for循环_zhangphil的博客-CSDN博客。 https://blog.csdn.net/zhangphil/article/details/131003571  

    2024年02月16日
    浏览(54)
  • 【Python入门篇】——Python中循环语句(循环中断break和continue)

    作者简介: 辭七七,目前大一,正在学习C/C++,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: Python入门,本专栏主要内容为Python的基础语法,Python中的选择循环语句,Python函数,Python的数据容器等。 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖 Python提供continue和

    2024年02月06日
    浏览(44)
  • python中如何在多层循环中使用break/continue

    关于break/continue这两个在平常的使用过程中一直比较迷糊。好不容易理解了吧,过段时间不使用好像忘记了什么。这个问题也是很多初学者比较容易提及的问题。 先通过一个简单的单层循环来了解一下这两个的使用。 下面是执行以后的结果展示。 根据执行完成

    2024年02月02日
    浏览(46)
  • 深入解析 C 语言中的 for 循环、break 和 continue

    当您确切地知道要循环执行代码块的次数时,可以使用  for  循环而不是  while  循环 语句 1 在执行代码块之前执行(一次)。 语句 2 定义执行代码块的条件。 语句 3 在执行代码块后执行(每次)。 下面的示例将打印数字 0 到 4: 示例 示例解释 语句 1 在循环开始之前设置

    2024年02月04日
    浏览(38)
  • 第42讲:Python循环语句中的break和continue语法结构

    在while或者for-in循环语句中想要结束循环,除了使用break跳出循环外,还可以使用continue语句。 break和continue的区别: break用于结束整个循环。 continue用于跳出本次循环,进入下一次循环。

    2024年02月06日
    浏览(40)
  • 第41讲:Python循环语句中的break和continue语法结构

    在while或者for-in循环语句中想要结束循环,除了使用break跳出循环外,还可以使用continue语句。 break和continue的区别: break用于结束整个循环。 continue用于跳出本次循环,进入下一次循环。

    2024年02月05日
    浏览(52)
  • 在使用Python 3中的循环时如何使用break、continue和pass语句

    简介 在 Python 中使用 for 循环 和 while 循环 可以让你以高效的方式自动化和重复任务。 但有时,外部因素可能会影响程序的运行方式。当发生这种情况时,你可能希望程序完全退出循环,跳过部分循环然后继续,或者忽略那个外部因素。你可以使用 break 、 continue 和 pass 语句

    2024年01月24日
    浏览(47)
  • 【30天熟悉Go语言】8 Go流程控制之循环结构for range、goto、break、continue

    Go系列文章: GO开篇:手握Java走进Golang的世界 2 Go开发环境搭建、Hello World程序运行 3 Go编程规约和API包 4 Go的变量、常量、运算符 5 Go 基本数据类型 6 Go 复杂数据类型之指针 7 Go流程控制之分支结构if、switch Go专栏传送链接:https://blog.csdn.net/saintmm/category_12326997.html for 循环是一

    2024年02月10日
    浏览(46)
  • 第03章_流程控制语句(顺序结构,分支语句,循环语句,break,continue,Scanner,如何获取一个随机数)

    流程控制语句是用来控制程序中各 语句执行顺序 的语句,可以把语句组合成能 完成一定功能 的小逻辑模块。 程序设计中规定的 三种 流程结构,即: 顺序结构 程序从上到下逐行地执行,中间没有任何判断和跳转。 分支结构 根据条件,选择性地执行某段代码。 有 if…els

    2024年01月22日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包