Commit 5eca8a30012b69b76316b71fa391a89fe09256cb
Committed by
GitHub
1 parent
df229cff
Added CPack packaging, pkg-config and CMake version files. (#298)
Showing
4 changed files
with
53 additions
and
3 deletions
CMakeLists.txt
| ... | ... | @@ -21,6 +21,8 @@ cmake_minimum_required(VERSION 3.1...3.19) |
| 21 | 21 | |
| 22 | 22 | list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/") |
| 23 | 23 | include(cxxopts) |
| 24 | +set("PROJECT_DESCRIPTION" "A header-only lightweight C++ command line option parser") | |
| 25 | +set("PROJECT_HOMEPAGE_URL" "https://github.com/jarro2783/cxxopts") | |
| 24 | 26 | |
| 25 | 27 | # Get the version of the library |
| 26 | 28 | cxxopts_getversion(VERSION) | ... | ... |
cmake/cxxopts.cmake
| ... | ... | @@ -87,18 +87,27 @@ endfunction() |
| 87 | 87 | |
| 88 | 88 | # Helper function to ecapsulate install logic |
| 89 | 89 | function(cxxopts_install_logic) |
| 90 | - set(CXXOPTS_CMAKE_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/cxxopts" CACHE STRING "Installation directory for cmake files, relative to ${CMAKE_INSTALL_PREFIX}.") | |
| 90 | + string(REPLACE "/${CMAKE_LIBRARY_ARCHITECTURE}" "" CMAKE_INSTALL_LIBDIR_ARCHIND "${CMAKE_INSTALL_LIBDIR}") | |
| 91 | + set(CXXOPTS_CMAKE_DIR "${CMAKE_INSTALL_LIBDIR_ARCHIND}/cmake/cxxopts" CACHE STRING "Installation directory for cmake files, relative to ${CMAKE_INSTALL_PREFIX}.") | |
| 91 | 92 | set(version_config "${PROJECT_BINARY_DIR}/cxxopts-config-version.cmake") |
| 92 | 93 | set(project_config "${PROJECT_BINARY_DIR}/cxxopts-config.cmake") |
| 93 | 94 | set(targets_export_name cxxopts-targets) |
| 95 | + set(PackagingTemplatesDir "${PROJECT_SOURCE_DIR}/packaging") | |
| 96 | + | |
| 97 | + | |
| 98 | + if(${CMAKE_VERSION} VERSION_GREATER "3.14") | |
| 99 | + set(OPTIONAL_ARCH_INDEPENDENT "ARCH_INDEPENDENT") | |
| 100 | + endif() | |
| 94 | 101 | |
| 95 | 102 | # Generate the version, config and target files into the build directory. |
| 96 | 103 | write_basic_package_version_file( |
| 97 | 104 | ${version_config} |
| 98 | 105 | VERSION ${VERSION} |
| 99 | - COMPATIBILITY AnyNewerVersion) | |
| 106 | + COMPATIBILITY AnyNewerVersion | |
| 107 | + ${OPTIONAL_ARCH_INDEPENDENT} | |
| 108 | + ) | |
| 100 | 109 | configure_package_config_file( |
| 101 | - ${PROJECT_SOURCE_DIR}/cxxopts-config.cmake.in | |
| 110 | + ${PackagingTemplatesDir}/cxxopts-config.cmake.in | |
| 102 | 111 | ${project_config} |
| 103 | 112 | INSTALL_DESTINATION ${CXXOPTS_CMAKE_DIR}) |
| 104 | 113 | export(TARGETS cxxopts NAMESPACE cxxopts:: |
| ... | ... | @@ -114,4 +123,36 @@ function(cxxopts_install_logic) |
| 114 | 123 | # Install the header file and export the target |
| 115 | 124 | install(TARGETS cxxopts EXPORT ${targets_export_name} DESTINATION ${CMAKE_INSTALL_LIBDIR}) |
| 116 | 125 | install(FILES ${PROJECT_SOURCE_DIR}/include/cxxopts.hpp DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) |
| 126 | + | |
| 127 | + | |
| 128 | + set(CPACK_PACKAGE_NAME "${PROJECT_NAME}") | |
| 129 | + set(CPACK_PACKAGE_VENDOR "cxxopt developers") | |
| 130 | + set(CPACK_PACKAGE_DESCRIPTION "${PROJECT_DESCRIPTION}") | |
| 131 | + set(CPACK_DEBIAN_PACKAGE_NAME "${CPACK_PACKAGE_NAME}") | |
| 132 | + set(CPACK_RPM_PACKAGE_NAME "${CPACK_PACKAGE_NAME}") | |
| 133 | + set(CPACK_PACKAGE_HOMEPAGE_URL "${PROJECT_HOMEPAGE_URL}") | |
| 134 | + set(CPACK_PACKAGE_MAINTAINER "${CPACK_PACKAGE_VENDOR}") | |
| 135 | + set(CPACK_DEBIAN_PACKAGE_MAINTAINER "${CPACK_PACKAGE_MAINTAINER}") | |
| 136 | + set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") | |
| 137 | + set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md") | |
| 138 | + | |
| 139 | + set(CPACK_DEBIAN_PACKAGE_NAME "lib${PROJECT_NAME}-dev") | |
| 140 | + set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6-dev") | |
| 141 | + set(CPACK_DEBIAN_PACKAGE_SUGGESTS "cmake, pkg-config, pkg-conf") | |
| 142 | + | |
| 143 | + set(CPACK_RPM_PACKAGE_NAME "lib${PROJECT_NAME}-devel") | |
| 144 | + set(CPACK_RPM_PACKAGE_SUGGESTS "${CPACK_DEBIAN_PACKAGE_SUGGESTS}") | |
| 145 | + | |
| 146 | + set(CPACK_DEB_COMPONENT_INSTALL ON) | |
| 147 | + set(CPACK_RPM_COMPONENT_INSTALL ON) | |
| 148 | + set(CPACK_NSIS_COMPONENT_INSTALL ON) | |
| 149 | + set(CPACK_DEBIAN_COMPRESSION_TYPE "xz") | |
| 150 | + | |
| 151 | + set(PKG_CONFIG_FILE_NAME "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc") | |
| 152 | + configure_file("${PackagingTemplatesDir}/pkgconfig.pc.in" "${PKG_CONFIG_FILE_NAME}" @ONLY) | |
| 153 | + install(FILES "${PKG_CONFIG_FILE_NAME}" | |
| 154 | + DESTINATION "${CMAKE_INSTALL_LIBDIR_ARCHIND}/pkgconfig" | |
| 155 | + ) | |
| 156 | + | |
| 157 | + include(CPack) | |
| 117 | 158 | endfunction() | ... | ... |
cxxopts-config.cmake.in renamed to packaging/cxxopts-config.cmake.in