[CMake] Status of clang support?

Campbell Barton ideasman42 at gmail.com
Wed Oct 27 10:32:07 EDT 2010


On Tue, Oct 26, 2010 at 1:02 AM, Mateusz Loskot <mateusz at loskot.net> wrote:
> On 25/10/10 01:38, Mateusz Loskot wrote:
>> On 24/10/10 23:00, Ryan Pavlik wrote:
>>> My best guess would be to check for some Clang-specific defines,
>>> similar to the platform checks.  Actually, it looks like in the Git
>>> repository of CMake, there is now some Clang-specific support:
>>> http://github.com/Kitware/CMake/commit/571dc7489111893355deba710feee5990bce92e4
>>> I think that this commit is included in 2.8.2.
>>
>> Ryan,
>>
>> It's very good to know.
>>
>>> I've made a note on that commit as to where I think a Clang-specific
>>> variable might be set.
>>
>> I've seen, great!
>>
>>> For now, you might be able to look at the
>>> value of CMAKE_CXX_COMPILER_ID for a more general solution - it seems
>>> like that might contain "Clang" if building using Clang.
>>
>> I'm having access to CMake 2.8.0 at this moment
>> And, this version sets CMAKE_CXX_COMPILER_ID to GNU, even if
>> C/C++ compilers set to clang:
>>
>> cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++
>>
>> Also, simple test always reports the "gnu".
>>
>> if("${CMAKE_CXX_COMPILER_ID}" MATCHES "clang")
>>   message(STATUS "clang")
>> elseif("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU")
>>   message(STATUS "gnu")
>> endif()
>>
>> I will try 2.8.2 soon.
>>
>> Thanks for your help!
>
> FYI,
>
> I have tried clang 2.9 (current SVN trunk)
> together with CMake from current git.
>
> The compiler ID matching works perfectly well!
>
> Thanks again!
>
> Best regards,

I've been using Clang static analyzer & regular Clang from SVN with
CMake  for some time and I only have 2 problems with this.
* When switching compilers some settings are lost, this is an
annoyance when using ccmake, since I have custom includes that need to
be entered in manually.
* For some reason I need to manually add these include paths to my
CXXFLAGS -I/usr/include/c++/4.5.1
-I/usr/include/c++/4.5.1/x86_64-unknown-linux-gnu/

Otherwise this works really well and gives especially good warnings &
errors with macros, aside from the static checker.
-- 
- Campbell


More information about the CMake mailing list