[CMake] check_cxx_compiler_flag usage

Damien R damienrg+list at gmail.com
Thu Dec 7 16:03:36 EST 2017


check_cxx_compiler_flag uses CMAKE_REQUIRED_DEFINITIONS. For me its means
that only "-DSOME_FLAG=VALUE" should be tested with this macro and I think
that the name is misleading.
Some people define CMAKE_REQUIRED_FLAGS / CMAKE_REQUIRED_LIBRARIES before
invoking check_cxx_compiler_flag but I think that they should use
check_cxx_source_compiles.
In your case I would use CMAKE_REQUIRED_FLAGS and check_cxx_source_compiles.

But as I am not the developer which has written this cmake code there may
be some points that invalidate what I just said.

Regards,

Damien R.


On 7 December 2017 at 15:13, Clément Gregoire <lectem at gmail.com> wrote:

> Your usage of check_cxx_compiler_flag is correct, it's probably just
> missing link flags or something.
> Can you check the error log of cmake to know why it fails to compile ? It
> is in your buildfolder : CMakeFiles/CMakeError.log
>
> Here's how I did it for coverage by the way (not perfect, but was enough
> for my usage):
>
> https://github.com/Lectem/cpp-boilerplate/blob/master/cmake/
> Coverage.cmake#L42
>
>
>
>
> 2017-12-07 14:31 GMT+01:00 Damien R <damienrg+list at gmail.com>:
>
>> Thank you for pointing that. It increments the number of people using
>> CMAKE_REQUIRED_FLAGS "trick" to make it working with
>> check_cxx_compiler_flag.
>>
>> But my question is more about :
>>  - why they coded CHECK_CXX_COMPILER_FLAG this way?
>>  - is my usage valid or not? If not what should I do? If yes, is it a bug?
>>
>> Regards,
>>
>> Damien R.
>>
>>
>>
>> On 7 December 2017 at 10:35, Eric Noulard <eric.noulard at gmail.com> wrote:
>>
>>>
>>> Not really answering the question but
>>> did you try to use an existing CMake module for handling sanitizers
>>> config?
>>>
>>> I find this one https://github.com/arsenm/sanitizers-cmake very
>>> effective, with
>>> modern CMake target oriented features.
>>>
>>>
>>>
>>>
>>> 2017-12-07 9:24 GMT+01:00 Damien R <damienrg+list at gmail.com>:
>>>
>>>> Hi,
>>>>
>>>> I am trying to use CHECK_CXX_COMPILER_FLAG with cmake 3.9 to check if
>>>> the compiler supports asan.
>>>> The CMakeLists.txt is:
>>>> cmake_minimum_required(VERSION 3.9)
>>>> include(CheckCXXCompilerFlag)
>>>> check_cxx_compiler_flag("-fsanitize=address" COMPILER_SUPPORT_FLAG)
>>>>
>>>> I always got:
>>>> -- Performing Test COMPILER_SUPPORT_FLAG - Failed
>>>>
>>>> Even if the documentation say that CHECK_CXX_COMPILER_FLAG sets
>>>> CMAKE_REQUIRED_DEFINITIONS by the name of the macro I thought that it would
>>>> work.
>>>> Can you tell me why CHECK_CXX_COMPILER_FLAG use
>>>> CMAKE_REQUIRED_DEFINITIONS instead of CMAKE_REQUIRED_FLAGS
>>>> and what is the official way for checking this flag?
>>>>
>>>> Regards,
>>>>
>>>> Damien R.
>>>>
>>>>
>>>> --
>>>>
>>>> Powered by www.kitware.com
>>>>
>>>> Please keep messages on-topic and check the CMake FAQ at:
>>>> http://www.cmake.org/Wiki/CMake_FAQ
>>>>
>>>> Kitware offers various services to support the CMake community. For
>>>> more information on each offering, please visit:
>>>>
>>>> CMake Support: http://cmake.org/cmake/help/support.html
>>>> CMake Consulting: http://cmake.org/cmake/help/consulting.html
>>>> CMake Training Courses: http://cmake.org/cmake/help/training.html
>>>>
>>>> Visit other Kitware open-source projects at
>>>> http://www.kitware.com/opensource/opensource.html
>>>>
>>>> Follow this link to subscribe/unsubscribe:
>>>> http://public.kitware.com/mailman/listinfo/cmake
>>>>
>>>
>>>
>>>
>>> --
>>> Eric
>>>
>>
>>
>> --
>>
>> Powered by www.kitware.com
>>
>> Please keep messages on-topic and check the CMake FAQ at:
>> http://www.cmake.org/Wiki/CMake_FAQ
>>
>> Kitware offers various services to support the CMake community. For more
>> information on each offering, please visit:
>>
>> CMake Support: http://cmake.org/cmake/help/support.html
>> CMake Consulting: http://cmake.org/cmake/help/consulting.html
>> CMake Training Courses: http://cmake.org/cmake/help/training.html
>>
>> Visit other Kitware open-source projects at
>> http://www.kitware.com/opensource/opensource.html
>>
>> Follow this link to subscribe/unsubscribe:
>> http://public.kitware.com/mailman/listinfo/cmake
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake/attachments/20171207/500acf2e/attachment.html>


More information about the CMake mailing list