I'm new to CMake and I've run into a little bit of a snag here, wondering if there is an "elegant" solution to this problem, or maybe there's just an easy solution.
As an example, for setting up compiler flags I'm doing the following:
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">
)
This works perfectly as expected, except for when I try a build using clang-cl as a compiler, ie:
cmake .. -G "Visual Studio 15 2017 Win64" -T "LLVM-vs2014"
The CXX ID is reported as Clang (it is clang after all) but I don't want to be using Clang flags, I actually want to be using MSVC flags since clang-cl is designed to be a drop in replacement for MSVCs cl - and hence only accepts MSVC style flags.
So what are some good solutions to this without creating some messy code? I know I could probably do a bunch of if() checks and set some variable, but I was trying to stick to "modern cmake" conventions, hence why I was using generator expressions to begin with.