[CMake] compiler defines for sub projects
Olaf Peter
ope-devel at gmx.de
Sat Apr 6 12:45:57 EDT 2013
thank you, this is a simply solution,
Olaf
> You can make a variable contain the defines you want and the use that variable in the set_target_properties command. The value of the variable will be inherited by all of the sup directories.
>
> option(FOO_OPTION "enable foo" OFF)
> option(BAR_OPTION "enable bar" OFF)
>
> if(FOO_OPTION)
> set(CUSTOM_DEFINE "FOO_X")
> elseif(BAR_OPTION)
> set(CUSTOM_DEFINE "FOO_Y")
> else
> set(CUSTOM_DEFINE "OTHER")
> endif()
>
> set_target_properties(my_lib PROPERTIES COMPILE_DEFINITIONS ${CUSTOM_DEFINE} )
>
> On Apr 6, 2013, at 1:21 AM, Olaf Peter <ope-devel at gmx.de> wrote:
>
>>
>> thanks for your answer.
>>
>> I've forgot to mention in the hurry yesterday, that inisde the lib
>> project generator exist which must not compiled with these defines.
>>
>> if(FOO_OPTION OR BAR_OPTION)
>>
>> add_executable(generator_target ...)
>> set_target_properties(generator_target ... COMPILE_DEFINITIONS ...)
>> endif()
>>
>> This is the reason for set_target_properties(my_lib ...)
>>
>> So this solution with add_definitions won't work. Possible it could work
>> if I removed those defs from target.
>>
>> Thanks,
>> Olaf
>>
>>> If you want to have all of the sub directories to have the defines
>> present, you could use ADD_DEFINITIONS().
>>>
>>> option(FOO_OPTION "enable foo" OFF)
>>> option(BAR_OPTION "enable bar" OFF)
>>>
>>> if(FOO_OPTION)
>>> add_definitions("-DFOO_X" )
>>> elseif(BAR_OPTION)
>>> add_definitions("-DFOO_Y")
>>> else()
>>> add_definitions("-DOTHER")
>>> endif()
>>>
>>> -----Original Message-----
>>> From: cmake-bounces at cmake.org [mailto:cmake-bounces at cmake.org] On
>> Behalf Of Olaf Peter
>>> Sent: Friday, April 05, 2013 12:58 PM
>>> To: cmake at cmake.org
>>> Subject: [CMake] compiler defines for sub projects
>>>
>>> Hello,
>>>
>>> is it possible to inherit compiler defines for sub projects in sub
>> directories?
>>>
>>> I have a library project which can be configured at compile time
>> using preprocessor defines (cmake option)
>>>
>>> option(FOO_OPTION "enable foo" OFF)
>>> option(BAR_OPTION "enable bar" OFF)
>>>
>>>
>>> if(FOO_OPTION)
>>> set_target_properties(my_lib PROPERTIES COMPILE_DEFINITIONS
>> "FOO_X" )
>>> elseif(BAR_OPTION)
>>> set_target_properties(my_lib PROPERTIES COMPILE_DEFINITIONS
>> "FOO_Y")
>>> else()
>>> set_target_properties(my_lib PROPERTIES COMPILE_DEFINITIONS
>> "OTHER" )
>>> endif()
>>>
>>> now, in the sub of this I have unit tests which need to know about
>> this compile defs, hence I have the same if/else again.
>>>
>>> Is there an easy way for this?
>>>
>>> Thanks,
>>> Olaf
>>> --
>>>
>>> Powered by www.kitware.com
>>>
>>> Visit other Kitware open-source projects at
>> http://www.kitware.com/opensource/opensource.html
>>>
>>> Please keep messages on-topic and check the CMake FAQ at:
>> http://www.cmake.org/Wiki/CMake_FAQ
>>>
>>> Follow this link to subscribe/unsubscribe:
>>> http://www.cmake.org/mailman/listinfo/cmake
>>>
>>
>> --
>>
>> Powered by www.kitware.com
>>
>> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>>
>> Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ
>>
>> Follow this link to subscribe/unsubscribe:
>> http://www.cmake.org/mailman/listinfo/cmake
>
>
More information about the CMake
mailing list