[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