[CMake] PROPERTY for list of link libraries

Tom Kacvinsky tom.kacvinsky at vectorcast.com
Mon Jan 25 09:33:52 EST 2016


Thanks.  Upgrading cmake right now is problematic.

On Mon, Jan 25, 2016 at 4:33 AM, Tamás Kenéz <tamas.kenez at gmail.com> wrote:

> I think you need something like CMakeExpandImportedTargets.cmake (
> https://cmake.org/cmake/help/latest/module/CMakeExpandImportedTargets.html).
> But that module has been deprecated for a while and does not support some
> newer CMake features.
>
> Instead, feel free to try out my fork:
> https://gist.github.com/tamaskenez/ef98237fff654c6d28b5 . This fork adds
> support for IMPORTED_IMPLIB, INTERFACE_LINK_LIBRARIES and $<CONFIG:>
> expressions.
>
> It recursively resolves all dependencies for the given configuration
> (Debug, Release, ...)
>
> Tamas
>
>
> On Fri, Jan 22, 2016 at 11:01 PM, Tom Kacvinsky <
> tom.kacvinsky at vectorcast.com> wrote:
>
>> Ah yes, that was it.  Switching to 3.3.2 did the trick.  Time to upgrade
>> cmake.
>>
>> On Fri, Jan 22, 2016 at 4:40 PM, Tom Kacvinsky <
>> tom.kacvinsky at vectorcast.com> wrote:
>>
>>> I am now having a problem with transitive dependencies.  I need all
>>> libraries that are linked in.  I am missing the ones that are linked in
>>> transitively.  Modified code is, ignoring J. Decker's suggestion about
>>> using generator expressions to get the path to the target's output.
>>>
>>> get_property(libs TARGET a_target PROPERTY LINK_LIBRARIES)
>>> foreach(lib ${libs})
>>>   if(TARGET ${lib})
>>>     # If this is a library, get its transitive dependencies
>>>     get_property(trans TARGET ${lib} PROPERTY INTERFACE_LINK_LIBRARIES)
>>>     foreach(tran ${trans})
>>>       if(TARGET ${tran})
>>>         get_property(path TARGET ${tran} PROPERTY LOCATION)
>>>         file(APPEND "${CMAKE_BINARY_DIR/libs.txt" "${path}\n")
>>>       endif()
>>>     endforeach()
>>>     get_property(path TARGET ${lib} PROPERTY LOCATION)
>>>     file(APPEND "${CMAKE_BINARY_DIR}/libs.txt" "${path}\n")
>>>   else()
>>>     file(APPEND "${CMAKE_BINARY_DIR}/libs.txt" "${lib}\n")
>>>   endif()
>>> endforeach()
>>>
>>> I am using cmake 2.8.11.2, perhaps this property doesn't do what I
>>> thought it would with this version of cmake?
>>>
>>> Thanks,
>>>
>>> Tom
>>>
>>> On Fri, Jan 22, 2016 at 9:23 AM, Tom Kacvinsky <
>>> tom.kacvinsky at vectorcast.com> wrote:
>>>
>>>> I have need for a cross platform methods of getting libraries linked
>>>> into an executable.
>>>>
>>>> Say for instance, we have
>>>>
>>>> add_library(foo STATIC a.c)
>>>> add_exceutable(bar b.c)
>>>> target_link_libraries(bar foo)
>>>>
>>>> So I know for that bar has a dependency on foo.lib (on Windows) and
>>>> libfoo.a on Linux.
>>>>
>>>> And so forth.  What I would like to do is after everything is set up,
>>>> query the properties of bar
>>>> and find the list of libraries linked into bar in such a fashion I get
>>>> that platform's specific library name (instead of the library's target
>>>> name).
>>>>
>>>> IS this possible?  I read the docs and didn't see a property for
>>>> getting this list.  Did I miss something?  If so I plan on using
>>>> either get_property of get_target_property.
>>>>
>>>> Thanks.
>>>>
>>>
>>>
>>
>> --
>>
>> 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/20160125/5925c396/attachment.html>


More information about the CMake mailing list