[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