It's important to know how CMake distinguishes between lists and plain strings. When you write:
set(VAR "a b c")
you create a string with the value "a b c"
. But when you write this line without quotes:
set(VAR a b c)
You create a list of three items instead: "a"
, "b"
and "c"
.
Non-list variables are actually lists too (of a single element).
Lists can be operated on with the list()
command, which allows concatenating lists, searching them, accessing arbitrary elements and so on (documentation of list()).
Somewhat confusing, a list is also a string. The line
set(VAR a b c)
is equivalent to
set(VAR "a;b;c")
Therefore, to concatenate lists one can also use the set()
command:
set(NEW_LIST "${OLD_LIST1};${OLD_LIST2})"