作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我认为它应该非常简单,但似乎不受支持...在 CMake 中是否有可能让列表的一个值包含分号?
原因非常简单 - 因为我在 Windows 上运行,而在 Windows 上,分号是一个环境变量(即 PATH
)中两个或多个文件夹之间的分隔符。
list(
APPEND
MY_TEST_ENVIRONMENT
"MY_FLAG=1"
)
# <...>
list(
APPEND
MY_TEST_ENVIRONMENT
"PATH=first_folder_path;second_folder_path"
# ^--- here is the problem
)
# <...>
set_property(TEST MyTests PROPERTY ENVIRONMENT ${MY_TEST_ENVIRONMENT})
我尝试删除和添加双引号,我尝试转义 \;
,我尝试添加相同的环境变量两次 - 但这些都不起作用!
最佳答案
通过使用反斜杠转义分号,您走在了正确的轨道上。但是,当在 ENVIRONMENT
测试属性中设置列表时,这不是列表将被使用的最后位置(并由 CMake 解释)。 MY_TEST_ENVIRONMENT
列表随后用于填充 CTestTestfile.cmake
,稍后由 CTest 读取以设置您的测试环境。
简而言之,您需要更多 转义字符来将分号传播到测试环境。具体来说,使用双反斜杠 \\
将 extra 反斜杠转义到列表中,连同 \;
转义分号。这是 CMake 的 escape characters文档供引用。总的来说,三个反斜杠应该可以工作:
list(
APPEND
MY_TEST_ENVIRONMENT
"MY_FLAG=1"
)
# <...>
list(
APPEND
MY_TEST_ENVIRONMENT
"PATH=first_folder_path\\\;second_folder_path"
# ^--- Use three backslashes here
)
# <...>
set_property(TEST MyTests PROPERTY ENVIRONMENT ${MY_TEST_ENVIRONMENT})
关于windows - 如何在 CMake 中使用分号值创建一个列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59862894/
我是一名优秀的程序员,十分优秀!