gpt4 book ai didi

c++ - 具有多个条目(空格?)的 Cmake 生成器表达式

转载 作者:行者123 更新时间:2023-12-04 08:30:42 25 4
gpt4 key购买 nike

(在写这个问题的过程中,我找到了一个解决方案,所以这只是记录它,因为我真的事先需要它!)
我正在编写一个 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>"
)
这不起作用,因为 compile 命令会选择额外的转义引号:
  "/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通过将每个值包装在自己的表达式中来“解决”这个问题,这看起来很奇怪而且非常不切实际。
有没有更简单的方法可以在生成器表达式中传递带有空格的字符串?
如前所述,我自己找到了一个可接受的解决方案,但还没有将其标记为我接受的答案,因为我不确定,这是一个很好的解决方案,而不是一个黑客,如果我需要在选项本身中使用分号,它可能会咬我。

最佳答案

"-Og -Wall"是一个字符串,而 "-Og;-Wall"是一个列表(因为列表是以分号分隔的字符串)。
所以set(my_list -Og -Wall) (无双引号)也会创建一个列表。阅读所有相关信息 here .

关于c++ - 具有多个条目(空格?)的 Cmake 生成器表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65035750/

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