diff --git a/CMakeLists.txt b/CMakeLists.txt index 27c344eef..6e344e8be 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -313,3 +313,17 @@ MESSAGE( STATUS "" ) GENERATE_PACKAGE_CONFIGURATION_FILES( LCIOConfig.cmake LCIOConfigVersion.cmake ) INSTALL( FILES cmake/MacroCheckPackageLibs.cmake cmake/MacroCheckPackageVersion.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) + +install(EXPORT ${PROJECT_NAME}Targets + NAMESPACE ${PROJECT_NAME}:: + FILE "${PROJECT_NAME}Targets.cmake" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/" + ) + +IF( NOT SIO_FOUND ) +install(EXPORT SIOTargets + NAMESPACE SIO:: + FILE "SIOTargets.cmake" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/SIO/" + ) +ENDIF() diff --git a/cmake/LCIOConfig.cmake.in b/cmake/LCIOConfig.cmake.in index ee589b236..e1b545636 100644 --- a/cmake/LCIOConfig.cmake.in +++ b/cmake/LCIOConfig.cmake.in @@ -67,6 +67,17 @@ CHECK_PACKAGE_LIBS( LCIO lcio @CHECK_PACKAGE_SIO_LIBRARY@ ) ## --------------------------------------------------------------- +include(CMakeFindDependencyMacro) +if("@CHECK_PACKAGE_SIO_LIBRARY@" STREQUAL "") + find_dependency(SIO REQUIRED) +else() + find_dependency(ZLIB REQUIRED) + include("${CMAKE_CURRENT_LIST_DIR}/SIOTargets.cmake") +endif() + +# Include the targets file to create the imported targets that a client can link +# to or execute +include("${CMAKE_CURRENT_LIST_DIR}/LCIOTargets.cmake") # ---------- final checking --------------------------------------------------- diff --git a/cmake/MacroGeneratePackageConfigFiles.cmake b/cmake/MacroGeneratePackageConfigFiles.cmake index e4a7b1259..683829eee 100644 --- a/cmake/MacroGeneratePackageConfigFiles.cmake +++ b/cmake/MacroGeneratePackageConfigFiles.cmake @@ -9,7 +9,7 @@ MACRO( GENERATE_PACKAGE_CONFIGURATION_FILES ) CONFIGURE_FILE( "${PROJECT_SOURCE_DIR}/cmake/${arg}.in" "${PROJECT_BINARY_DIR}/${arg}" @ONLY ) - INSTALL( FILES "${PROJECT_BINARY_DIR}/${arg}" DESTINATION . ) + INSTALL( FILES "${PROJECT_BINARY_DIR}/${arg}" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} ) #IF( EXISTS "${_current_dir}/MacroCheckPackageLibs.cmake" ) # INSTALL( FILES "${_current_dir}/MacroCheckPackageLibs.cmake" DESTINATION cmake ) #ENDIF() @@ -26,7 +26,7 @@ MACRO( GENERATE_PACKAGE_CONFIGURATION_FILES ) CONFIGURE_FILE( "${PROJECT_SOURCE_DIR}/cmake/${arg}.in" "${PROJECT_BINARY_DIR}/${arg}" @ONLY ) - INSTALL( FILES "${PROJECT_BINARY_DIR}/${arg}" DESTINATION . ) + INSTALL( FILES "${PROJECT_BINARY_DIR}/${arg}" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} ) #IF( EXISTS "${_current_dir}/MacroCheckPackageVersion.cmake" ) # INSTALL( FILES "${_current_dir}/MacroCheckPackageVersion.cmake" DESTINATION cmake ) #ENDIF() diff --git a/sio/CMakeLists.txt b/sio/CMakeLists.txt index 707dbb1dd..85d48e1ac 100644 --- a/sio/CMakeLists.txt +++ b/sio/CMakeLists.txt @@ -35,9 +35,9 @@ TARGET_INCLUDE_DIRECTORIES( sio PUBLIC $ $ ) -TARGET_INCLUDE_DIRECTORIES( sio SYSTEM PUBLIC ${ZLIB_INCLUDE_DIR} ) -TARGET_LINK_LIBRARIES( sio ${ZLIB_LIBRARIES} ) -INSTALL_SHARED_LIBRARY( sio DESTINATION ${CMAKE_INSTALL_LIBDIR} ) +TARGET_LINK_LIBRARIES( sio PUBLIC ZLIB::ZLIB ) +INSTALL_SHARED_LIBRARY( sio DESTINATION ${CMAKE_INSTALL_LIBDIR} EXPORT SIOTargets ) +ADD_LIBRARY( SIO::sio ALIAS sio ) # Install the sio headers as well. Necessary for the python bindings and also # for cases where others want to link against LCIO / this version of SIO diff --git a/src/cpp/CMakeLists.txt b/src/cpp/CMakeLists.txt index 035ba2385..811460d63 100644 --- a/src/cpp/CMakeLists.txt +++ b/src/cpp/CMakeLists.txt @@ -257,12 +257,13 @@ ADD_SHARED_LIBRARY( lcio ${LCIO_SIO_SRCS} ${LCIO_MT_SRCS} ) -INSTALL_SHARED_LIBRARY( lcio DESTINATION ${CMAKE_INSTALL_LIBDIR} ) +INSTALL_SHARED_LIBRARY( lcio DESTINATION ${CMAKE_INSTALL_LIBDIR} EXPORT LCIOTargets ) TARGET_LINK_LIBRARIES( lcio ${CMAKE_THREAD_LIBS_INIT} ) -TARGET_LINK_LIBRARIES( lcio ${SIO_LIBRARIES} ) +TARGET_LINK_LIBRARIES( lcio PRIVATE SIO::sio ) ADD_CUSTOM_TARGET( lib DEPENDS lcio ) +ADD_LIBRARY( LCIO::lcio ALIAS lcio ) # ----------------------------------------------------------------------------