CMake列表到字符串:简单的分号替换

CMake列表到字符串:简单的分号替换,cmake,Cmake,我被一个非常简单的例子弄糊涂了。我有一个标准列表,所以它的字符串表示基本上使用分号作为分隔符。我想用另一个替换它: set(L1 "A" "B" "C") message("L1: ${L1}") string(REPLACE ";" "<->" L2 ${L1}) message("L2: ${L2}") 我不明白为什么。据我所知,我的字符串替换似乎有效。我做错了什么?是否有方法将值ABC存储在我的第二个变量中 注意:我使用CMake 3.7.2只是把${L1}放在引号中: s

我被一个非常简单的例子弄糊涂了。我有一个标准列表,所以它的字符串表示基本上使用分号作为分隔符。我想用另一个替换它:

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

string(REPLACE ";" "<->" L2 ${L1})
message("L2: ${L2}")
我不明白为什么。据我所知,我的字符串替换似乎有效。我做错了什么?是否有方法将值
ABC
存储在我的第二个变量中


注意:我使用CMake 3.7.2

只是把
${L1}
放在引号中:

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

string(REPLACE ";" "<->" L2 "${L1}")
message("L2: ${L2}")
set(L1“A”B“C”)
消息(“L1:${L1}”)
字符串(替换““L2”${L1}”)
消息(“L2:${L2}”)
否则,该列表将再次扩展为以空格分隔的参数列表

参考


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

      我想你可以从cmake 3.12开始使用
      列表(JOIN L1”,“L2)
      set(L1 "A" "B" "C")
      message("L1: ${L1}")
      
      string(REPLACE ";" "<->" L2 "${L1}")
      message("L2: ${L2}")