[CMake] [Windows] clang-cl.exe detected as MSVC?

Konstantin Tokarev annulen at yandex.ru
Tue Sep 12 08:53:50 EDT 2017



11.09.2017, 18:12, "Mateusz Loskot" <mateusz at loskot.net>:
> On 11 September 2017 at 17:04, Konstantin Tokarev <annulen at yandex.ru> wrote:
>>  11.09.2017, 17:59, "Mateusz Loskot" <mateusz at loskot.net>:
>>>  Hi,
>>>
>>>  I'm building a project with CMake 3.9 using clang-cl.exe driver [1]
>>>  from LLVM/clang 4.0 enabled with Visual Studio 2015 environment.
>>>
>>>  CMake detects the compiler as Clang 4.0.0:
>>>
>>>  -- The C compiler identification is Clang 4.0.0
>>>  -- The CXX compiler identification is Clang 4.0.0
>>>  -- Check for working C compiler: C:/Program Files/LLVM/bin/clang-cl.exe
>>>  -- Check for working C compiler: C:/Program Files/LLVM/bin/clang-cl.exe -- works
>>>
>>>  and my project builds fine.
>>>
>>>  In my CMakeLists.txt, there is this flags update:
>>>
>>>  if(MSVC)
>>>    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
>>>  endif()
>>>
>>>  and in build log I see:
>>>
>>>  clang-cl.exe: warning: argument unused during compilation: '/MP'
>>>
>>>  I have double-checked and MSVC is defined and set True for clang-cl.exe.
>>>
>>>  Is this correct?
>>
>>  Yes. clang-cl is mostly compatible with MSVC on the command line
>
> Mostly, or less or more, it's subjective and my experience show it is not
> as compatible as one may expect.
> Also, AFAIU, compatibility is only at driver level that is command
> line interface.
>
>>  so it's natural that MSVC code in existing projects is applied to clang-cl too.
>
> I'd rather expect CL.exe exclusively considered as CL.exe

For fine-grained distinction you have CMAKE_CXX_COMPILER_ID

>
> Best regards,
> --
> Mateusz Loskot, http://mateusz.loskot.net

-- 
Regards,
Konstantin


More information about the CMake mailing list