在CMake中将变量转换为'string'类型

时间:2018-02-02 09:59:40

标签: makefile scripting cmake

请告诉我如何在CMake中将变量转换为string类型的变量。

我有一个包含数字和字母的变量。说的形式:“Ax3.0.1”。我不知道CMake到底看到了什么类型的变量,但我想将它转换为字符串,以便我可以通过它进行迭代。请告诉我我该怎么做。谢谢。

1 个答案:

答案 0 :(得分:0)

在内部,CMake中的每个变量都是字符串。但是,与许多其他编程语言不同,在CMake string 不是字符数组。因此,不能直接使用foreach迭代字符串中的字符。

最接近的是通过索引提取字符来迭代字符标记:

set(var "Ax3.0.1")

# Compute length of the string
string(LENGTH ${var} var_length)
# But foreach needs the last index, not a range.
math(EXPR last_char_index "${var_length} - 1")

message("Characters in string '${var}':")
foreach(char_index RANGE ${last_char_index}) # Iterate over indicies
    # Create variable 'char' which contains specific character of the string.
    string(SUBSTRING "${var}" "${char_index}" "1" char)
    message("${char}")
endforeach()

如你所见,这看起来很难看。实际上,通常使用字符串正则表达式中的提取特定字符。