foreach
foreach(item "A" "B" "C")
message(" ${item}")
endforeach()
A
B
C
#set(mylist a b c)
set(mylist "a;b;c")
foreach(item ${mylist})
message(${item})
endforeach()
a
b
c
while
set(a "")
set(condition TRUE)
message("Loop with condition as variable:")
while(condition)
set(a "${a}x")
message(" a = ${a}")
string(COMPARE NOTEQUAL "${a}" "xxxxx" condition)
endwhile()
a = x
a = xx
a = xxx
a = xxxx
a = xxxxx
set(a "")
message("Loop with explicit condition:")
while(NOT a STREQUAL "xxxxx")
set(a "${a}x")
message(" a = ${a}")
endwhile()
a = x
a = xx
a = xxx
a = xxxx
a = xxxxx
Range
message("Range with limits:")
foreach(x RANGE 3 8)
message(" ${x}")
endforeach()
3
4
5
6
7
8
message("Range with step:")
foreach(x RANGE 10 14 2) # step is 2
message(" ${x}")
endforeach()
10
12
14
break
message("Stop 'while' loop:")
set(a "")
while(TRUE)
set(a "${a}x")
message(" ${a}")
string(COMPARE EQUAL "${a}" "xxx" done)
if(done)
break()
endif()
endwhile()
continue(version 3.2 부터 가능)
cmake_minimum_required(VERSION 3.2)
project(foo NONE)
message("Loop with 'continue':")
foreach(x RANGE 10)
if(x EQUAL 2 OR x EQUAL 5)
message(" skip ${x}")
continue()
endif()
message(" process ${x}")
endforeach()