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

Mateusz Loskot mateusz at loskot.net
Mon Sep 11 11:11:38 EDT 2017


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

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


More information about the CMake mailing list