[CMake] How to query compiler definitions?

Michael Wild themiwi at gmail.com
Wed Jan 19 03:58:24 EST 2011


On 01/19/2011 09:50 AM, SF Markus Elfring wrote:
>> Why don't you include the check for NDEBUG in in your "debug-sources"?
> 
> This is the case already.
> 
> 
>> The time you'll waste compiling these files will be negligible, and it
>> would work with mult-config IDE's.
> 
> I find this view debatable. I would appreciate if I can express in the
> build specification that a few source file are optional for the
> compilation because of this well-known preprocessor symbol.
> 
> Regards,
> Markus

But that's exactly the problem. For multi-config IDE's you *don't know*
whether NDEBUG is defined or not at CMake-time. And AFAIK there's no way
to specify that a source file is conditional on the build configuration.

The only other way I can see how to handle this, is to create a static
library (say debug_funcs) and then link that conditionally. E.g:

----------<8----------
add_library(debug_funcs STATIC EXCLUDE_FROM_ALL debug_funcs.c)
add_executable(super super.c)
target_link_libraries(super debug debug_funcs)
----------<8----------

This way, as I understand it, debug_funcs will only be built if the
executable super links against it, which it only does for the Debug
configuration.

Michael


More information about the CMake mailing list