想象一下,我有以下字符串:
set(SEXY_STRING "I love CMake")
然后我想从SEXY_LIST
获取SEXY_STRING
所以我可以
list(LENGTH SEXY_LIST len)
和len
相等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}")