【发布时间】:2018-03-25 20:20:07
【问题描述】:
我是 CMake 的新手,在这里遇到了一些障碍,想知道是否有针对此问题的“优雅”解决方案,或者可能只是一个简单的解决方案。
例如,为了设置编译器标志,我正在执行以下操作:
target_compile_options(${PROJECT_NAME}
PUBLIC
$<$<CXX_COMPILER_ID:GNU>:"-some_gnu_flag">
$<$<CXX_COMPILER_ID:Clang>:"-some_clang_flag">
$<$<CXX_COMPILER_ID:MSVC>:"/some_msvc_flag">
)
这完全符合预期,除非我尝试使用 clang-cl 作为编译器进行构建,即:
cmake .. -G "Visual Studio 15 2017 Win64" -T "LLVM-vs2014"
CXX ID 报告为 Clang(毕竟是 clang)但我不想使用 Clang 标志,我实际上想使用 MSVC 标志,因为 clang-cl 是设计的作为 MSVC 的替代品 cl - 因此只接受 MSVC 样式标志。
那么有什么好的解决方案而不创建一些混乱的代码呢?我知道我可能会做一堆 if() 检查并设置一些变量,但我试图坚持“现代 cmake”约定,因此我开始使用生成器表达式。
【问题讨论】:
标签: cmake