gpt4 book ai didi

cmake - 在 CMake 中以分号分隔的列表中转义 "[]"个字符

转载 作者:行者123 更新时间:2023-12-04 02:24:52 27 4
gpt4 key购买 nike

我发现“[”和“]”在 CMake 中以分号分隔的列表中可能具有特殊含义。 .当我在 CMakeLists.txt 中尝试此代码时:

set(XX "a" "b" "[" "]")
message("${XX}")

foreach(x ${XX})
message("--> ${x}")
endforeach()

我期待结果:
a;b;[;]
--> a
--> b
--> [
--> ]

但是我得到了这个:
a;b;[;]
--> a
--> b
--> [;]

我没有找到有关“[”和“]”用法的任何文档。是否可以转义这些字符,以便获得预期的结果?我正在使用 CMake 2.8.12.2 .谢谢你的帮助 :)

最佳答案

根据documentation开方括号肯定有特殊含义:

Note: CMake versions prior to 3.0 do not support bracket arguments. They interpret the opening bracket as the start of an Unquoted Argument.



所以问题是混合引用和未引用的参数。您的情况可能的解决方法是在初始化时将方括号替换为其他内容,然后再将其替换回来,如下所示:
CMAKE_MINIMUM_REQUIRED (VERSION 2.8.11)
PROJECT (HELLO NONE)

SET(XX a b BRACKET ])

MESSAGE("${XX}")

FOREACH(x ${XX})
STRING(REGEX REPLACE "BRACKET" "[" x ${x})
MESSAGE("--> ${x}")
ENDFOREACH()

关于cmake - 在 CMake 中以分号分隔的列表中转义 "[]"个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26057678/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com