功能
- 有序遍歷容器的所有元素
- 可以使用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