使用CMAKE将字符串拆分为列表的常用方法是什么?

时间:2011-03-11 12:18:01

标签: cmake

想象一下,我有以下字符串:

set(SEXY_STRING "I love CMake")

然后我想从SEXY_LIST获取SEXY_STRING所以我可以

list(LENGTH SEXY_LIST len)

len相等3.

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

3 个答案:

答案 0 :(得分:62)

;替换您的分隔符。我没有看到任何其他方法。

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

答案 1 :(得分:28)

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

答案 2 :(得分:11)

string(REGEX MATCHALL "[a-zA-Z]+\ |[a-zA-Z]+$" SEXY_LIST "${SEXY_STRING}")