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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM