提问人:Janbur 提问时间:10/24/2023 更新时间:10/24/2023 访问量:29
如何将包含尖括号的编译器选项传递到 CMake 的 add_compiler_options()?
How do I pass a compiler option that contains angle brackets into CMake's add_compiler_options()?
问:
我正在尝试让 QT 的 Squish Coco 代码覆盖率工具在我基于 CMake 的构建环境中工作,而无需使用CMAKE_C_FLAGS_COVERAGE全局变量。我在 Windows 上使用 CMake 版本 3.24.2。我有以下全局编译器选项,我需要传递到 add_compiler_options():
--cs-on --cs-output=P:\%F.<TEST_NAME>.${HOST_NAME}.%p.%t
我已经尝试了几种排列,但我无法让 CMake 停止在整个第二个选项及其值周围添加双引号。
尝试 1:
add_compile_options("$<$<CONFIG:COVERAGE>:--cs-on;--cs-output=P:\%F.<TEST_NAME$<ANGLE-R>.${HOST_NAME}.%p.%t>")
在compile_commands.json中给了我以下内容:
--cs-on \"--cs-output=P:\\coverage/%F.<TEST_NAME>.ca-pc39.%p.%t\"
尝试 2:
add_compile_options("$<$<CONFIG:COVERAGE>:--cs-on;--cs-output=\"P:\%F.<TEST_NAME$<ANGLE-R>.${HOST_NAME}.%p.%t\">")
给我:
--cs-on \"--cs-output=\\\"P:\\coverage/%F.<TEST_NAME>.ca-pc39.%p.%t\\\"\"
尝试 3:
如果我从上面的尝试 1 中删除两个尖括号,我会得到:
--cs-on --cs-output=P:\\coverage/%F.TEST_NAME.ca-pc39.%p.%t
所以尖括号导致了这种情况,无论有没有生成器表达式,它都会发生。有了报价,Coco 似乎完全忽略了这个选项。有什么方法可以防止这种情况发生吗?
答: 暂无答案
评论