Imaginez que j'ai la chaîne suivante:
set(SEXY_STRING "I love CMake")
alors je veux obtenir SEXY_LIST
de SEXY_STRING
donc je peux faire
list(LENGTH SEXY_LIST len)
et len
est égal à 3.
J'ai trouvé plusieurs macros sur le web, mais je veux vraiment savoir comment le faire de manière "naturelle". Cette opération semble être très basique et largement utilisée.
Remplacez votre séparateur par un ;
. Je ne vois pas d'autre moyen de le faire.
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
Vous pouvez utiliser le SEPARATE_ARGUMENTS
commande: http://www.cmake.org/cmake/help/cmake2.6docs.html#command:separate_arguments
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}")