cmake foreach

功能

  • 有序遍历容器的所有元素
  • 可以使用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
posted @ 2021-11-23 23:47  flxx  阅读(1451)  评论(0编辑  收藏  举报