我试图在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}")
这意味着:关于c++ - 如何使用cmake生成器表达式为不同的编译器添加编译器标志?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63613507/