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.kacvin...@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