mirror of
https://github.com/SOCI/soci.git
synced 2026-05-24 14:09:04 -05:00
CMake: Rework package export and installation
Install into the GNUInstallDirs variables rather than the custom variables. Generate and install SOCIConfig.cmake and SOCIConfigVersion.cmake files. Install CMake package files into the correct directory. Fixes: #849
This commit is contained in:
+2
-13
@@ -186,24 +186,13 @@ set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
# Installation
|
||||
###############################################################################
|
||||
|
||||
if(NOT DEFINED SOCI_LIBDIR)
|
||||
if(APPLE OR CMAKE_SIZEOF_VOID_P EQUAL 4)
|
||||
set(SOCI_LIBDIR "lib")
|
||||
else()
|
||||
set(SOCI_LIBDIR "lib64")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(BINDIR "bin" CACHE PATH "The directory to install binaries into.")
|
||||
set(LIBDIR ${SOCI_LIBDIR} CACHE PATH "The directory to install libraries into.")
|
||||
set(DATADIR "share" CACHE PATH "The directory to install data files into.")
|
||||
set(INCLUDEDIR "include" CACHE PATH "The directory to install includes into.")
|
||||
include(GNUInstallDirs)
|
||||
|
||||
###############################################################################
|
||||
# Configuration files
|
||||
###############################################################################
|
||||
set(CONFIG_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/include)
|
||||
install(DIRECTORY ${CONFIG_INCLUDE_DIR}/soci DESTINATION ${INCLUDEDIR})
|
||||
install(DIRECTORY ${CONFIG_INCLUDE_DIR}/soci DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||
set(CONFIG_FILE_IN "include/soci/soci-config.h.in")
|
||||
set(CONFIG_FILE_OUT "${CONFIG_INCLUDE_DIR}/soci/soci-config.h")
|
||||
|
||||
|
||||
@@ -210,27 +210,25 @@ macro(soci_backend NAME)
|
||||
# Backend installation
|
||||
install(FILES ${THIS_BACKEND_HEADERS}
|
||||
DESTINATION
|
||||
${INCLUDEDIR}/${PROJECTNAMEL}/${NAMEL})
|
||||
${CMAKE_INSTALL_INCLUDEDIR}/${PROJECTNAMEL}/${NAMEL})
|
||||
|
||||
if (SOCI_SHARED)
|
||||
install(TARGETS ${THIS_BACKEND_TARGET}
|
||||
EXPORT SOCI
|
||||
RUNTIME DESTINATION ${BINDIR}
|
||||
LIBRARY DESTINATION ${LIBDIR}
|
||||
ARCHIVE DESTINATION ${LIBDIR})
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||
endif()
|
||||
|
||||
if (SOCI_STATIC)
|
||||
install(TARGETS ${THIS_BACKEND_TARGET_STATIC}
|
||||
EXPORT SOCI
|
||||
RUNTIME DESTINATION ${BINDIR}
|
||||
LIBRARY DESTINATION ${LIBDIR}
|
||||
ARCHIVE DESTINATION ${LIBDIR}
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
)
|
||||
endif()
|
||||
|
||||
install(EXPORT SOCI NAMESPACE SOCI:: DESTINATION cmake)
|
||||
|
||||
else()
|
||||
colormsg(HIRED "${NAME}" RED "backend disabled, since")
|
||||
endif()
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
@PACKAGE_INIT@
|
||||
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/SOCITargets.cmake)
|
||||
+14
-8
@@ -10,6 +10,8 @@
|
||||
###############################################################################
|
||||
colormsg(_HIBLUE_ "Configuring SOCI core library:")
|
||||
|
||||
include(CMakePackageConfigHelpers)
|
||||
|
||||
# Set INCLUDE_DIRECTORIES
|
||||
get_directory_property(SOCI_CORE_INCLUDE_DIRS INCLUDE_DIRECTORIES)
|
||||
list(APPEND SOCI_CORE_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR})
|
||||
@@ -106,25 +108,29 @@ endif()
|
||||
#
|
||||
# Core installation
|
||||
#
|
||||
install(FILES ${SOCI_CORE_HEADERS} DESTINATION ${INCLUDEDIR}/${PROJECTNAMEL})
|
||||
install(FILES ${SOCI_CORE_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECTNAMEL})
|
||||
|
||||
if (SOCI_SHARED)
|
||||
install(TARGETS ${SOCI_CORE_TARGET}
|
||||
EXPORT SOCI
|
||||
RUNTIME DESTINATION ${BINDIR}
|
||||
LIBRARY DESTINATION ${LIBDIR}
|
||||
ARCHIVE DESTINATION ${LIBDIR})
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||
endif()
|
||||
|
||||
if (SOCI_STATIC)
|
||||
install(TARGETS ${SOCI_CORE_TARGET_STATIC}
|
||||
EXPORT SOCI
|
||||
RUNTIME DESTINATION ${BINDIR}
|
||||
LIBRARY DESTINATION ${LIBDIR}
|
||||
ARCHIVE DESTINATION ${LIBDIR})
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||
endif()
|
||||
|
||||
install(EXPORT SOCI NAMESPACE SOCI:: DESTINATION cmake)
|
||||
install(EXPORT SOCI NAMESPACE SOCI:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/SOCI FILE SOCITargets.cmake)
|
||||
configure_package_config_file(${PROJECT_SOURCE_DIR}/cmake/resources/SOCIConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/SOCIConfig.cmake
|
||||
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/SOCI)
|
||||
write_basic_package_version_file(SOCIConfigVersion.cmake VERSION ${SOCI_VERSION} COMPATIBILITY SameMajorVersion)
|
||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/SOCIConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/SOCIConfigVersion.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/SOCI)
|
||||
|
||||
#
|
||||
# Core configuration summary
|
||||
|
||||
Reference in New Issue
Block a user