Philip Lowman wrote:
On Tue, Feb 10, 2009 at 1:01 PM, Brad King <brad.k...@kitware.com CMake 2.6 makes it easy to export targets from one project (either its
    build tree or install tree) for use by another project.

Is this the easiest way to register dependencies of IMPORTED static libraries against each other? I'm just curious if there are plans to make target_link_libraries() work for this or is there a technical problem allowing it?

I do not plan to allow target_link_libraries for this.  One must use
IMPORTED_LINK_INTERFACE_LIBRARIES.  However, it is easier than your
example makes it because the property can name other imported targets:

add_library(baz STATIC IMPORTED)
set_target_properties(baz PROPERTIES
    IMPORTED_LOCATION_RELEASE ${CMAKE_CURRENT_SOURCE_DIR}/libbaz.a
    IMPORTED_LOCATION_DEBUG   ${CMAKE_CURRENT_SOURCE_DIR}/libbazd.a)

add_library(bar STATIC IMPORTED)
set_target_properties(bar PROPERTIES
    IMPORTED_LOCATION_RELEASE ${CMAKE_CURRENT_SOURCE_DIR}/libbar.a
    IMPORTED_LOCATION_DEBUG   ${CMAKE_CURRENT_SOURCE_DIR}/libbard.a
    IMPORTED_LINK_INTERFACE_LIBRARIES baz) # <-- dependency is here

Note if the outside project is also created by CMake, the install(EXPORT)
feature can generate the proper import code for it.

-Brad

project(Foo)
cmake_minimum_required(VERSION 2.6)

add_library(baz STATIC IMPORTED)
set_target_properties(baz PROPERTIES
    IMPORTED_LOCATION         ${CMAKE_CURRENT_SOURCE_DIR}/libbaz.a
    IMPORTED_LOCATION_RELEASE ${CMAKE_CURRENT_SOURCE_DIR}/libbaz.a
    IMPORTED_LOCATION_DEBUG   ${CMAKE_CURRENT_SOURCE_DIR}/libbazd.a)

add_library(bar STATIC IMPORTED)
set_target_properties(bar PROPERTIES
    IMPORTED_LOCATION         ${CMAKE_CURRENT_SOURCE_DIR}/libbar.a
    IMPORTED_LOCATION_RELEASE ${CMAKE_CURRENT_SOURCE_DIR}/libbar.a
    IMPORTED_LOCATION_DEBUG   ${CMAKE_CURRENT_SOURCE_DIR}/libbard.a)

#target_link_libraries(bar baz) # no worky
get_target_property(baz_loc     baz IMPORTED_LOCATION)
get_target_property(baz_loc_rel baz IMPORTED_LOCATION_RELEASE)
get_target_property(baz_loc_deb baz IMPORTED_LOCATION_DEBUG)
set_target_properties(bar PROPERTIES
    IMPORTED_LINK_INTERFACE_LIBRARIES         ${baz_loc}
    IMPORTED_LINK_INTERFACE_LIBRARIES_RELEASE ${baz_loc_rel}
    IMPORTED_LINK_INTERFACE_LIBRARIES_DEBUG   ${baz_loc_deb})

add_executable(foo foo.cc)
target_link_libraries(foo bar) # dependency on baz is implied


--
Philip Lowman

_______________________________________________
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://www.cmake.org/mailman/listinfo/cmake

Reply via email to