CMake list to string:简单的分号替换

时间:2017-03-31 09:21:56

标签: cmake

我对一个非常简单的例子感到困惑。我有一个标准列表,所以基本上它的字符串表示使用分号作为分隔符。我想用另一个替换它:

set(L1 "A" "B" "C")
message("L1: ${L1}")

string(REPLACE ";" "<->" L2 ${L1})
message("L2: ${L2}")

此代码段打印:

L1: A;B;C
L2: ABC

我不明白为什么。根据{{​​3}},我的字符串替换似乎有效。我究竟做错了什么 ?有没有办法将值A<->B<->C存储在我的第二个变量中?

注意:我使用CMake 3.7.2

2 个答案:

答案 0 :(得分:9)

只需将${L1}放在引号中:

set(L1 "A" "B" "C")
message("L1: ${L1}")

string(REPLACE ";" "<->" L2 "${L1}")
message("L2: ${L2}")

否则列表将再次扩展为空格分隔的参数列表。

<强>参考

答案 1 :(得分:7)

但是${L1} 不是字符串,它是一个列表。如果你想要一个字符串,那么你需要用双引号括起来,如"${L1}"