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

Mateusz Loskot mateusz at loskot.net
Tue Sep 12 10:55:57 EDT 2017


On 12 September 2017 at 14:53, Konstantin Tokarev <annulen at yandex.ru> wrote:
> 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>:
>>>>
>>>>  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


I'll switch over to that one. Thanks

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


More information about the CMake mailing list