如何解决如何使用cmake生成器表达式为不同的编译器添加编译器标志?
我正试图在CMAKE 3.17.2中使用类似的东西:
# GCC options
add_compile_options($<$<CXX_COMPILER_ID:GNU>:-fmax-errors=1>)
# clang options
add_compile_options($<$<CXX_COMPILER_ID:AppleClang>:-ferror-limit=2,-Werror=unused-private-field>)
但是,似乎不可能同时添加多个选项。我已经尝试用逗号,空格,引号将选项括起来。有语法允许这样做吗?还是必须单独添加每个选项?
解决方法
我认为分号是要走的路。这是带有多个选项的嵌套条件的示例:
set(MY_COMPILE_OPTIONS
"$<IF:$<CXX_COMPILER_ID:MSVC>,"
"/W4;$<$<CONFIG:RELEASE>:/O2>,"
"-Wall;-Wextra;-Werror;"
"$<$<CONFIG:RELEASE>:-O3>"
">"
)
target_compile_options(MyTarget PUBLIC "${MY_COMPILE_OPTIONS}")
这意味着:
- 如果MSVC &&!发布版本-> / W4
- 如果MSVC && Release版本-> / W4 / 02
- 否则,如果不发布版本-> -Wall -Wextra -Werror
- 否则,如果发布版本已建立-> -Wall -Wextra -Werror -O3
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。