我对一个非常简单的例子感到困惑。我有一个标准列表,所以基本上它的字符串表示使用分号作为分隔符。我想用另一个替换它:
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
答案 0 :(得分:9)
只需将${L1}
放在引号中:
set(L1 "A" "B" "C")
message("L1: ${L1}")
string(REPLACE ";" "<->" L2 "${L1}")
message("L2: ${L2}")
否则列表将再次扩展为空格分隔的参数列表。
<强>参考强>
答案 1 :(得分:7)
但是${L1}
不是字符串,它是一个列表。如果你想要一个字符串,那么你需要用双引号括起来,如"${L1}"
。