gpt4 book ai didi

windows - 如何在 CMake 中使用分号值创建一个列表?

转载 作者:行者123 更新时间:2023-12-05 01:13:45 25 4
gpt4 key购买 nike

我认为它应该非常简单,但似乎不受支持...在 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/

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