To store a list, CMake concatenates all elements into a string, using a semicolon, ;
, as a delimiter: a;list;of;5;elements
. You can escape a semicolon in an element with a backslash, like so: a\;single\;element
.
To create a list, we can use the set()
command:
set(myList a list of five elements)
Because of how lists are stored, the following commands will have exactly the same effect:
set(myList "a;list;of;five;elements")
set(myList a list "of;five;elements")
CMake automatically unpacks lists in unquoted arguments. By passing an unquoted myList
reference, we effectively send more arguments to the command:
message("the list is:" ${myList})
The message()
command will receive six arguments: “the list is:
", “a
", “list
", “of
", “five
", and “elements
". This may have unintended consequences, as the output will be printed without any additional spaces...