[CMake] Setting properties from within a function

Tamás Kenéz tamas.kenez at gmail.com
Wed Apr 13 09:20:42 EDT 2016


Okay, I see. The problem is that the ${DEF} is quoted so it won't fall
apart into separate arguments.
Tamás

On Wed, Apr 13, 2016 at 4:54 AM, Michael Surette <mjsurette at gmail.com>
wrote:

> On 2016-04-12 06:57 PM, Tamás Kenéz wrote:
>
>> I don't get how come the macro works because
>> `target_compile_definitions` needs at least 3 parameters. The second one
>> must be PRIVATE|PUBLIC|INTERFACE.
>> Tamas
>>
>> On Tue, Apr 12, 2016 at 7:43 AM, Michael Surette
>> <mjsurette at gmail.com
>> <mailto:mjsurette at gmail.com>> wrote:
>>
>>     I would like to use set target properties from within a function.  ie
>>
>>     function(MINE TGT DEF)
>>        target_compile_definitions("${TGT}" "${DEF}")
>>     endfunction(MINE TGT DEF)
>>
>>     This doesn't work.  If I change it to a macro, it does.
>>
>>     macro(MINE TGT DEF)
>>        target_compile_definitions("${TGT}" "${DEF}")
>>     endmacro(MINE TGT DEF)
>>
>>     Is there a way to extend the scope of TGT in the function so that
>>     the function variant works?
>>
>
> Good catch.
>
> Actually, I have the (usually PRIVATE) part as the beginning of ${DEF}.
>
> To clarify, this is a question about scoping.  If the command in the
> function was a "set" I could do
>
> set("${TGT}" "${DEF}" PARENT_SCOPE)
>
> In my example, what I want to do is set the target_compile_definitions of
> the name "${TGT}".  A function is preferable to a macro so I can avoid
> namespace collisions.
>
> This is not all that this function does of course, or I would just call
> target_compile_definitions directly, but I cut out the other stuff to
> simplify the example.
>
> Upon further thought, perhaps you are on to something, let me do some
> testing.
>
> In the meantime, any more thoughts would be appreciated.
>
>
> Mike
>
> --
>
> 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/20160413/01ac8d59/attachment.html>


More information about the CMake mailing list