CMakeLists.txt语法规则:while 循环

发布于:2024-05-06 ⋅ 阅读:(23) ⋅ 点赞:(0)

一.  简介

前面几篇文章学习了 CMakeLists.txt语法中的一种循环写法,文章如下:

CMakeLists.txt语法规则:foreach 循环基本用法-CSDN博客

CMakeLists.txt语法规则:foreach循环的关键字-CSDN博客

本文学习 while循环写法。

二.  CMakeLists.txt语法规则:while 循环

1.  while 循环基本用法

while 循环用法如下:

while(condition)
 command1(args ...)
 command1(args ...)
 ...
endwhile(condition)
endwhile 括号中的 condition 可写可不写,如果写了,就必须和 while 中的 condition 一致。

cmake while 循环的含义与 C 语言中 while 循环的含义相同,但条件 condition 为真时,执行循环体中 的命令,而条件 condition 的语法形式与 if 条件判断中的语法形式相同。

# while 循环测试
set(loop_var 4)
while(loop_var GREATER 0)
 message("${loop_var}")
 math(EXPR loop_var "${loop_var} - 1")
endwhile()

上例中,while 循环的条件是(loop_var GREATER 0),等价于(loop_var > 0),当 loop_var 变量的有效数值大于 0 时,执行 while 循环体;在 while 循环体中使用到了 cmake 中的数学运算命令 math(),关于数学运 算下小节会向大家介绍。

while 循环体中,打印 loop_var ,之后将 loop_var 减一。

输出结果如下:

三.  break、continue

cmake 中,也可以在循环体中使用类似于 C 语言中的 break continue 语句

1. continue

continue()命令用于结束本次循环,执行下一次循环,测试如下:

# while...continue 测试
# 打印所有偶数
set(loop_var 10)

while(loop_var GREATER 0) #loop_var>0 时 执行循环体
 math(EXPR var "${loop_var} % 2") #求余

 if(var EQUAL 0) #如果 var=0,表示它是偶数
    message("${loop_var}") #打印这个偶数
    math(EXPR loop_var "${loop_var} - 1")#loop_var--
    continue() # 执行下一次循环
 endif()

 math(EXPR loop_var "${loop_var} - 1")#loop_var--
endwhile()
这段 cmake 代码是求 0 10 之间的偶数(左闭右开),并将偶数打印出来,使用到了 continue() 命令。
打印结果如下:

2.   break

break() 命令用于跳出循环,和在 C 语言中的作用是一样的,测试如下:
# while...break 测试
set(loop_var 10)

while(loop_var GREATER 0) #loop_var>0 时 执行循环体
 message("${loop_var}")

 if(loop_var LESS 6) #当 loop_var 小于 6 时
 message("break")
 break() #跳出循环
 endif()

 math(EXPR loop_var "${loop_var} - 1")#loop_var--
endwhile()

打印信息如下:

整个代码笔者就不再解释了,注释已经写得很清楚了!

关于 break() continue() 命令的使用就介绍到这里了。