权重高的网站有哪些,广广东网站建设,c 还可以做网站,网易做相册旅游网站目录 一、foreach()二、while()三、break() 与 continue() 作为一个编程语言#xff0c;CMake也少不了循环流程控制#xff0c;他提供两种循环foreach() 和 while()。
一、foreach()
基本语法#xff1a;
foreach(loop_var items)commands
endfo… 目录 一、foreach()二、while()三、break() 与 continue() 作为一个编程语言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 eset(myList 1 2 3 4)
foreach(var ${myList})message(var ${var})
endforeach()
----------------
var 1
var 2
var 3
var 4foreach() 还有一些进阶的用法 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 5foreach(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 10foreach(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 4foreach(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() 结束本次循环并继续下次循环。
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