功能
- 有序遍历容器的所有元素
- 可以使用break() 或者continue()
1. 遍历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()
#output
-- item is a.cpp
-- item is b.cpp
-- item is c.cpp
2. 从零开始到目标结果,stop不可为负数,默认步长为1
语法如下
foreach(<loop_var> RANGE <stop>)
举例如下
foreach(i RANGE 5)
message(STATUS "i = ${i}")
endforeach()
# output
-- i = 0
-- i = 1
-- i = 2
-- i = 3
-- i = 4
-- i = 5
3. 存在起始位置和截至位置的跳动,左右都是闭区间,步长可指定,默认为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()
# output
# default step = 1
j = 3
j = 4
j = 5
j = 6
# custom step = 2
k = 3
k = 5
4. 多集合的并集
- LISTS可以认为是一个有名的集合,入set(A a b c)
- ITEMS可以认为是一个匿名的集合,如a b c
语法如下
foreach(loop_var IN [LISTS [<lists>] [ITEMS [<items>]]])
举例如下
set(A a b c)
set(B "1 2 3")
foreach(i IN ITEMS A B)
message("i = ${i}")
endforeach()
foreach(i IN LISTS A B)
message("i = ${i}")
endforeach()
#output
# ITEMS
i = A
i = B
# LISTS
i = a
i = b
i = c
i = 1 2 3