问题描述
我正试图在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