用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}")