Merge pull request #332 from Erroneous1/master

Export xlnt::xlnt target when installed.
This commit is contained in:
Thomas Fussell 2019-07-05 06:21:40 -06:00 committed by GitHub
commit 076c421a1f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 68 additions and 34 deletions

13
cmake/XlntConfig.cmake.in Normal file
View File

@ -0,0 +1,13 @@
set(XLNT_VERSION "@xlnt_VERSION@")
@PACKAGE_INIT@
get_filename_component(XLNT_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
set_and_check(XLNT_INCLUDE_DIR "@XLNT_INCLUDE_INSTALL_DIR@")
check_required_components(xlnt)
if(NOT TARGET xlnt::xlnt)
include("${XLNT_CMAKE_DIR}/XlntTargets.cmake")
endif()

View File

@ -98,6 +98,7 @@ file(GLOB DETAIL_NUMBER_FORMAT_SOURCES ${XLNT_SOURCE_DIR}/detail/number_format/*
file(GLOB DETAIL_SERIALIZATION_HEADERS ${XLNT_SOURCE_DIR}/detail/serialization/*.hpp) file(GLOB DETAIL_SERIALIZATION_HEADERS ${XLNT_SOURCE_DIR}/detail/serialization/*.hpp)
file(GLOB DETAIL_SERIALIZATION_SOURCES ${XLNT_SOURCE_DIR}/detail/serialization/*.cpp) file(GLOB DETAIL_SERIALIZATION_SOURCES ${XLNT_SOURCE_DIR}/detail/serialization/*.cpp)
set(DETAIL_HEADERS ${DETAIL_ROOT_HEADERS} ${DETAIL_CRYPTOGRAPHY_HEADERS} set(DETAIL_HEADERS ${DETAIL_ROOT_HEADERS} ${DETAIL_CRYPTOGRAPHY_HEADERS}
${DETAIL_EXTERNAL_HEADERS} ${DETAIL_HEADER_FOOTER_HEADERS} ${DETAIL_EXTERNAL_HEADERS} ${DETAIL_HEADER_FOOTER_HEADERS}
${DETAIL_IMPLEMENTATIONS_HEADERS} ${DETAIL_NUMBER_FORMAT_HEADERS} ${DETAIL_IMPLEMENTATIONS_HEADERS} ${DETAIL_NUMBER_FORMAT_HEADERS}
@ -135,6 +136,19 @@ endif()
# Append "d" to the name of the compiled library # Append "d" to the name of the compiled library
set(CMAKE_DEBUG_POSTFIX "d" CACHE STRING "Set debug library postfix") set(CMAKE_DEBUG_POSTFIX "d" CACHE STRING "Set debug library postfix")
include(GNUInstallDirs)
set(XLNT_INC_DEST_DIR ${CMAKE_INSTALL_INCLUDEDIR}
CACHE PATH "Default location to install include files")
set(XLNT_LIB_DEST_DIR ${CMAKE_INSTALL_LIBDIR}
CACHE PATH "Default location to install library files")
set(XLNT_BIN_DEST_DIR ${CMAKE_INSTALL_BINDIR}
CACHE PATH "Default location to install runtime files")
set(XLNT_MAN_DEST_DIR ${CMAKE_INSTALL_MANDIR}
CACHE PATH "Default location to install runtime files")
set(XLNT_CMAKE_CFG_DEST_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
CACHE PATH "Default location to install CMake config files")
if(NOT STATIC) if(NOT STATIC)
# Compile shared library # Compile shared library
add_library(xlnt SHARED add_library(xlnt SHARED
@ -149,7 +163,7 @@ if(NOT STATIC)
PROPERTIES PROPERTIES
VERSION ${PROJECT_VERSION} VERSION ${PROJECT_VERSION}
SOVERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} SOVERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
INSTALL_NAME_DIR "${LIB_DEST_DIR}") INSTALL_NAME_DIR "${XLNT_LIB_DEST_DIR}")
else() else()
# Compile static library # Compile static library
add_library(xlnt STATIC ${XLNT_HEADERS} ${XLNT_SOURCES} $<TARGET_OBJECTS:libstudxml>) add_library(xlnt STATIC ${XLNT_HEADERS} ${XLNT_SOURCES} $<TARGET_OBJECTS:libstudxml>)
@ -160,10 +174,14 @@ endif()
#target_compile_features(xlnt PUBLIC cxx_std_${XLNT_CXX_LANG}) #target_compile_features(xlnt PUBLIC cxx_std_${XLNT_CXX_LANG})
# Includes # Includes
target_include_directories(xlnt PUBLIC ${XLNT_INCLUDE_DIR}) target_include_directories(xlnt
target_include_directories(xlnt PRIVATE ${XLNT_SOURCE_DIR}) PUBLIC
target_include_directories(xlnt PRIVATE ${XLNT_SOURCE_DIR}/../third-party/libstudxml) $<BUILD_INTERFACE:${XLNT_INCLUDE_DIR}>
target_include_directories(xlnt PRIVATE ${XLNT_SOURCE_DIR}/../third-party/utfcpp) $<INSTALL_INTERFACE:${XLNT_INC_DEST_DIR}>
PRIVATE
${XLNT_SOURCE_DIR}
${XLNT_SOURCE_DIR}/../third-party/libstudxml
${XLNT_SOURCE_DIR}/../third-party/utfcpp)
# Platform- and file-specific settings, MSVC # Platform- and file-specific settings, MSVC
if(MSVC) if(MSVC)
@ -216,40 +234,43 @@ source_group(utils FILES ${UTILS_HEADERS} ${UTILS_SOURCES})
source_group(workbook FILES ${WORKBOOK_HEADERS} ${WORKBOOK_SOURCES}) source_group(workbook FILES ${WORKBOOK_HEADERS} ${WORKBOOK_SOURCES})
source_group(worksheet FILES ${WORKSHEET_HEADERS} ${WORKSHEET_SOURCES}) source_group(worksheet FILES ${WORKSHEET_HEADERS} ${WORKSHEET_SOURCES})
if(NOT INC_DEST_DIR)
# Default location to install include files
set(INC_DEST_DIR ${CMAKE_INSTALL_PREFIX}/include)
endif()
if(NOT LIB_DEST_DIR)
# Default location to install library files
set(LIB_DEST_DIR ${CMAKE_INSTALL_PREFIX}/lib)
endif()
if(NOT BIN_DEST_DIR)
# Default location to install runtime files
set(BIN_DEST_DIR ${CMAKE_INSTALL_PREFIX}/bin)
endif()
if(NOT MAN_DEST_DIR)
# Default location to install runtime files
set(MAN_DEST_DIR ${CMAKE_INSTALL_PREFIX}/share/man)
endif()
# Install library # Install library
install(TARGETS xlnt install(TARGETS xlnt EXPORT XlntTargets
LIBRARY DESTINATION ${LIB_DEST_DIR} LIBRARY DESTINATION ${XLNT_LIB_DEST_DIR}
ARCHIVE DESTINATION ${LIB_DEST_DIR} ARCHIVE DESTINATION ${XLNT_LIB_DEST_DIR}
RUNTIME DESTINATION ${BIN_DEST_DIR}) RUNTIME DESTINATION ${XLNT_BIN_DEST_DIR})
install(EXPORT XlntTargets
FILE XlntTargets.cmake
NAMESPACE xlnt::
DESTINATION ${XLNT_CMAKE_CFG_DEST_DIR})
include(CMakePackageConfigHelpers)
set(XLNT_INCLUDE_INSTALL_DIR ${XLNT_INC_DEST_DIR})
#See https://cmake.org/cmake/help/latest/module/CMakePackageConfigHelpers.html
configure_package_config_file(../cmake/XlntConfig.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/XlntConfig.cmake
INSTALL_DESTINATION ${XLNT_CMAKE_CFG_DEST_DIR}
PATH_VARS XLNT_INCLUDE_DIR)
write_basic_package_version_file(XlntConfigVersion.cmake
COMPATIBILITY ExactVersion)
install(FILES
${CMAKE_CURRENT_BINARY_DIR}/XlntConfig.cmake
${CMAKE_CURRENT_BINARY_DIR}/XlntConfigVersion.cmake
DESTINATION ${XLNT_CMAKE_CFG_DEST_DIR})
# Install include directory # Install include directory
install(DIRECTORY ${XLNT_INCLUDE_DIR}/xlnt install(DIRECTORY ${XLNT_INCLUDE_DIR}/xlnt
DESTINATION include DESTINATION ${XLNT_INC_DEST_DIR}
PATTERN ".DS_Store" EXCLUDE) PATTERN ".DS_Store" EXCLUDE)
# Install LICENSE.md # Install LICENSE.md
install(FILES ${XLNT_ROOT_DIR}/docs/xlnt.3 install(FILES ${XLNT_ROOT_DIR}/docs/xlnt.3
DESTINATION ${MAN_DEST_DIR}/man3) DESTINATION ${XLNT_MAN_DEST_DIR}/man3)
# Configure uninstall # Configure uninstall
configure_file("${XLNT_ROOT_DIR}/cmake/cmake_uninstall.cmake.in" configure_file("${XLNT_ROOT_DIR}/cmake/cmake_uninstall.cmake.in"
@ -263,8 +284,8 @@ add_custom_target(uninstall
if(NOT MSVC) if(NOT MSVC)
# Set pkg-config variables # Set pkg-config variables
set(PKG_CONFIG_LIBDIR ${LIB_DEST_DIR}) set(PKG_CONFIG_LIBDIR ${XLNT_LIB_DEST_DIR})
set(PKG_CONFIG_INCLUDEDIR ${INC_DEST_DIR}) set(PKG_CONFIG_INCLUDEDIR ${XLNT_INC_DEST_DIR})
set(PKG_CONFIG_LIBS "-L\${libdir} -lxlnt") set(PKG_CONFIG_LIBS "-L\${libdir} -lxlnt")
set(PKG_CONFIG_CFLAGS "-I\${includedir}") set(PKG_CONFIG_CFLAGS "-I\${includedir}")
@ -274,5 +295,5 @@ if(NOT MSVC)
# pkg-config install # pkg-config install
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/xlnt.pc" install(FILES "${CMAKE_CURRENT_BINARY_DIR}/xlnt.pc"
DESTINATION ${LIB_DEST_DIR}/pkgconfig) DESTINATION ${XLNT_LIB_DEST_DIR}/pkgconfig)
endif() endif()