What is common way to split string into list with CMAKE?
Imagine I have the following string :
set(SEXY_STRING "I love CMake")
then I want to obtain SEXY_LIST
from SEXY_STRING
so I can do
list(LENGTH SEXY_LIST len)
and len
is equal 3.
I've found several macros on web, but I really want to know how to do it in "natural" way. This operation seems to be very basic and widely used.
Replace your separator by a ;
. I don't see any other way to do it.
cmake_minimum_required(VERSION 2.8)
set(SEXY_STRING "I love CMake")
string(REPLACE " " ";" SEXY_LIST ${SEXY_STRING})
message(STATUS "string = ${SEXY_STRING}")
# string = I love CMake
message(STATUS "list = ${SEXY_LIST}")
# list = I;love;CMake
list(LENGTH SEXY_LIST len)
message(STATUS "len = ${len}")
# len = 3
You can use the separate_arguments
command.
cmake_minimum_required(VERSION 2.6)
set(SEXY_STRING "I love CMake")
message(STATUS "string = ${SEXY_STRING}")
# string = I love CMake
set( SEXY_LIST ${SEXY_STRING} )
separate_arguments(SEXY_LIST)
message(STATUS "list = ${SEXY_LIST}")
# list = I;love;CMake
list(LENGTH SEXY_LIST len)
message(STATUS "len = ${len}")
# len = 3
string(REGEX MATCHALL "[a-zA-Z]+\ |[a-zA-Z]+$" SEXY_LIST "${SEXY_STRING}")