【发布时间】:2021-03-10 03:25:33
【问题描述】:
(在写这个问题的过程中我找到了一个解决方案,所以这只是记录它,因为我真的需要它!)
我正在编写一个 c++ 项目并使用 cmake。
在我的 cmake 文件中,我有:
set(MY_DEBUG_WARNINGS "-Og -Wall"
)
# Add warnings:
add_compile_options("$<$<CONFIG:DEBUG>:${MY_DEBUG_WARNINGS}>"
"$<$<CXX_COMPILER_ID:Clang,AppleClang>:-fcolor-diagnostics>"
"$<$<CXX_COMPILER_ID:GNU>:-fdiagnostics-color>"
)
这不起作用,因为编译命令会选择额外的转义引号:
"/usr/bin/clang++ -I../src/Exception/include -g \"-Og -Wall\" -fcolor-diagnostics -
std=c++17 -o src/Exception/CMakeFiles/exception.dir/Exception.cpp.o -c
/home/bob/app/src/Exception/Exception.cpp",
"file": "/home/bob/app/src/Exception/Exception.cpp"
问题似乎是警告中的空格。
This question 通过将每个值包装在自己的表达式中来“解决”问题,这看起来很奇怪而且非常不切实际。 有没有更简单的方法在生成器表达式中传递带有空格的字符串?
如前所述,我自己找到了一个可接受的解决方案,但尚未将其标记为我接受的答案,因为我不确定,这是一个很好的解决方案,而不是如果我需要在选项本身。
【问题讨论】:
标签: c++ cmake generator-expression