用CMAKE将string拆分成列表的常用方法是什么?

想象一下,我有以下string:

set(SEXY_STRING "I love CMake") 

那么我想从SEXY_STRING获得SEXY_LIST ,所以我可以做

 list(LENGTH SEXY_LIST len) 

len等于3。

我在网上发现了几个macros,但我真的想知道如何以“自然”的方式做到这一点。 这个操作似乎是非常基础和广泛使用的。

把你的分隔符换成a ; 。 我没有看到任何其他的方式来做到这一点。

 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 

您可以使用SEPARATE_ARGUMENTS命令: http : SEPARATE_ARGUMENTS : 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}")