[CMake] Setting target properties

Philip Lowman philip at yhbt.com
Thu Aug 27 21:22:30 EDT 2009


On Thu, Aug 27, 2009 at 3:11 PM, Andrey Maslennikov <
andrew.maslennikov at gmail.com> wrote:

> My case: I have one file which can be compiled into 4 different binaries
> using macros. For this I use add_definitions() and remove_definitions()
> commands. But as I understand these commands has global effect in CMakeLists
> file. How can I define and undefine macros in *one* CMakeLists file?
>
> For this case more useful another command - set_target_properties() with
> property COMPILE_FLAGS. It really helped me, but I was confronted with
> difficulties in this way. I can't call it with 2 parameters, like
> set_target_properties( target PROPERTIES COMPILE_FLAGS -D__flag1__
> COMPILE_FLAGS -D__flag2__ ). In this case no keys were defined... It's very
> strange, because CMake's documentation present usage example with multiple
> properties in one command. I solved this issue with variable which contains
> all needed keys.


You could write a small CMakeLists function that uses get_target_property()
followed by
set_target_properties() to append flags to the COMPILE_FLAGS property.

Give this a shot:

function(append_compile_flags_to_target _target)
   get_target_property(_existing ${_target} COMPILE_FLAGS)
   if(_existing)
       set_target_properties(${_target} PROPERTIES COMPILE_FLAGS
"${_existing} ${ARGN}")
   else()
       set_target_properties(${_target} PROPERTIES COMPILE_FLAGS ${ARGN})
   endif()
endfunction()

Overall though I agree with you, it should be possible to append multiple
properties to the same set_target_properties() command.

-- 
Philip Lowman
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20090827/247b8f17/attachment.htm>


More information about the CMake mailing list