[CMake] PROPERTY for list of link libraries

Tom Kacvinsky tom.kacvinsky at vectorcast.com
Fri Jan 22 17:01:32 EST 2016


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.
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake/attachments/20160122/ac6718c2/attachment.html>


More information about the CMake mailing list