diff --git a/QXlsx/CMakeLists.txt b/QXlsx/CMakeLists.txt index 5e16bddc..d9657f1a 100644 --- a/QXlsx/CMakeLists.txt +++ b/QXlsx/CMakeLists.txt @@ -12,6 +12,7 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_AUTOMOC ON) include(GNUInstallDirs) +include(CMakePackageConfigHelpers) if(NOT DEFINED QT_VERSION_MAJOR) find_package(QT NAMES Qt6 Qt5 COMPONENTS Core Gui REQUIRED) @@ -174,7 +175,7 @@ PRIVATE ${QXLSX_HEADERPATH} PUBLIC $ - $ + $ ) set_target_properties(QXlsx PROPERTIES @@ -184,32 +185,36 @@ set_target_properties(QXlsx PROPERTIES PUBLIC_HEADER "${QXLSX_PUBLIC_HEADERS}" ) +set(CMAKECONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/${EXPORT_NAME}" ) install(TARGETS QXlsx - EXPORT ${EXPORT_NAME}Targets DESTINATION ${CMAKE_INSTALL_LIBDIR} + EXPORT ${EXPORT_NAME}Targets DESTINATION ${CMAKECONFIG_INSTALL_DIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT runtime ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT devel - PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/QXlsxQt${QT_VERSION_MAJOR} COMPONENT devel + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/QXlsx COMPONENT devel ) install(EXPORT ${EXPORT_NAME}Targets - DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${EXPORT_NAME}/ + DESTINATION "${CMAKECONFIG_INSTALL_DIR}" FILE ${EXPORT_NAME}Targets.cmake NAMESPACE QXlsx:: COMPONENT devel ) -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules/qxlsx-config.cmake.in - ${CMAKE_CURRENT_BINARY_DIR}/${EXPORT_NAME}Config.cmake - @ONLY +configure_package_config_file( + "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules/qxlsx-config.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/${EXPORT_NAME}Config.cmake" + INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR} + PATH_VARS CMAKE_INSTALL_INCLUDEDIR CMAKE_INSTALL_LIBDIR CMAKECONFIG_INSTALL_DIR ) -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules/qxlsx-config-version.cmake.in - ${CMAKE_CURRENT_BINARY_DIR}/${EXPORT_NAME}ConfigVersion.cmake + +configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules/qxlsx-config-version.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/${EXPORT_NAME}ConfigVersion.cmake" @ONLY ) install( FILES - ${CMAKE_CURRENT_BINARY_DIR}/${EXPORT_NAME}Config.cmake - ${CMAKE_CURRENT_BINARY_DIR}/${EXPORT_NAME}ConfigVersion.cmake - DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${EXPORT_NAME}/ + "${CMAKE_CURRENT_BINARY_DIR}/${EXPORT_NAME}Config.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/${EXPORT_NAME}ConfigVersion.cmake" + DESTINATION "${CMAKECONFIG_INSTALL_DIR}" ) include(CPackConfig) diff --git a/QXlsx/cmake/modules/qxlsx-config.cmake.in b/QXlsx/cmake/modules/qxlsx-config.cmake.in index d72276b8..532d8319 100644 --- a/QXlsx/cmake/modules/qxlsx-config.cmake.in +++ b/QXlsx/cmake/modules/qxlsx-config.cmake.in @@ -4,11 +4,17 @@ # - Config information for QXlsx # This file defines: # -# QXlsx_INCLUDE_DIR - the QXlsx include directory -# QXlsx_LIBRARY - Link these to use QXlsx +# @EXPORT_NAME@_INCLUDE_DIR - the QXlsx include directory +# @EXPORT_NAME@_LIBRARY_DIR - the QXlsx library directory +# @EXPORT_NAME@_LIBRARIES - Link these to use QXlsx -SET(prefix "@CMAKE_INSTALL_PREFIX@") -SET(exec_prefix "@CMAKE_INSTALL_PREFIX@") -SET(QXlsx_FOUND "TRUE") +@PACKAGE_INIT@ + +set_and_check(@EXPORT_NAME@_INCLUDE_DIR "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@") +set_and_check(@EXPORT_NAME@_LIBRARY_DIR "@PACKAGE_CMAKE_INSTALL_LIBDIR@") include("${CMAKE_CURRENT_LIST_DIR}/@EXPORT_NAME@Targets.cmake") + +set(@EXPORT_NAME@_LIBRARIES "@EXPORT_NAME@") + +check_required_components(@EXPORT_NAME@) diff --git a/QXlsx/source/xlsxdocument.cpp b/QXlsx/source/xlsxdocument.cpp index 38fd1157..54301af8 100644 --- a/QXlsx/source/xlsxdocument.cpp +++ b/QXlsx/source/xlsxdocument.cpp @@ -98,7 +98,7 @@ std::string copyTag(const std::string &sFrom, const std::string &sTo, const std: if (!sFromData.empty()) { // tag found in 'from'? // search all occurrences of tag in 'sOut' and delete them - int firstPosTag = -1; + size_t firstPosTag = -1; while (true) { std::size_t startPos = sOut.find(tagToFindStart); if (startPos != std::string::npos) {