Hi,

one thing that has bothered me in earlier CMake versions is how targets
with imported dependencies are exported. Consider this contrived case:

add_library(yaml SHARED IMPORTED)
set_target_properties(yaml PROPERTIES IMPORTED_LOCATION "/usr/lib/libyaml.so")
set_target_properties(yaml PROPERTIES INTERFACE_INCLUDE_DIRECTORIES 
"/usr/include")
add_library(main SHARED main.cpp)
target_link_libraries(main yaml)
export(TARGETS main FILE myproj-exports.cmake)

The generated export file is going to contain this:

# Create imported target main
add_library(main SHARED IMPORTED)

# Import target "main" for configuration ""
set_property(TARGET main APPEND PROPERTY IMPORTED_CONFIGURATIONS NOCONFIG)
set_target_properties(main PROPERTIES
  IMPORTED_LINK_INTERFACE_LIBRARIES_NOCONFIG "yaml"
  IMPORTED_LOCATION_NOCONFIG "/tmp/cmake/build/libmain.so"
  IMPORTED_SONAME_NOCONFIG "libmain.so"
  )

The problem I see is that, to make this work for a consumer of the
imported target to have a yaml target as well. Unfortunately, I cannot
export yaml, because it isn't being build by this tree.

Of course, I can just require users to fix the dependency themselves,
but sometimes I would like to specify things like
INTERFACE_COMPILE_DEFINITIONS on an imported target that I need to
propagate.

It would be great, if I could export imported targets and if CMake could
walk the dependency tree automatically and import those targets on an
as-needed basis.

Am I missing anything here that already allows me to do this or is this
a worthwhile feature to add?

Cheers,
Philipp

-- 

Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers

Reply via email to