The*_*her 4 windows makefile list cmake cmake-language
我认为它应该是非常微不足道的,但似乎不支持它......在 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})
Run Code Online (Sandbox Code Playgroud)
我尝试删除和添加双引号,我尝试转义\;,我尝试添加相同的环境变量两次 - 但这些都不起作用!
通过用反斜杠转义分号,您就走上了正确的道路。但是,在测试属性中设置列表时ENVIRONMENT,这并不是最后使用列表(并由 CMake 解释)的位置。然后该MY_TEST_ENVIRONMENT列表用于填充CTestTestfile.cmake,稍后由 CTest 读取以设置您的测试环境。
简而言之,您需要更多转义字符来将分号传播到测试环境。具体来说,使用双反斜杠\\将额外的反斜杠与转义的分号一起转义到列表中\;。这里是CMake的转义字符文档供参考。总共三个反斜杠应该有效:
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})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3151 次 |
| 最近记录: |