I'm running into this again, and I trawled through the mailing list, and
according to Bill (4/11/2009 - managing lists with space separated
elements), I should be able to get a list from a string with a single
command.
If you want to convert a string to a list you can do it like this:
set(list ${string})
That will make the space separated list string into a ; separated list. If
you want to keep string a string you need quotes:
set(newstring "${string}").
It doesn't seem to work that way though, so perhaps I'm missing something.
Here's my test program:
function(print_list name)
list(LENGTH ${name} length_of_list)
message("${name} has ${length_of_list} items")
set(count 0)
foreach(i ${${name}})
message("${name}[${count}] = ${i}")
math(EXPR count "${count} + 1")
endforeach()
endfunction()
set(mylist a b c)
set(mystring "a b c")
set(mylist_from_string ${mystring})
print_list(mylist)
print_list(mystring)
print_list(mylist_from_string)
And here's what I get when I run it:
cmake -P list-from-string.cmake
mylist has 3 items
mylist[0] = a
mylist[1] = b
mylist[2] = c
mystring has 1 items
mystring[0] = a b c
mylist_from_string has 1 items
mylist_from_string[0] = a b c
--
Powered by www.kitware.com
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Please keep messages on-topic and check the CMake FAQ at:
http://www.cmake.org/Wiki/CMake_FAQ
Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake