[CMake] PROPERTY for list of link libraries

Tom Kacvinsky tom.kacvinsky at vectorcast.com
Fri Jan 22 16:40:02 EST 2016


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/af59e086/attachment.html>


More information about the CMake mailing list