Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/jarro2783/cxxopts.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKOLANICH <KOLANICH@users.noreply.github.com>2021-07-31 03:34:21 +0300
committerGitHub <noreply@github.com>2021-07-31 03:34:21 +0300
commit5eca8a30012b69b76316b71fa391a89fe09256cb (patch)
treec9869911e17ca19fdbf4a4b419584699ed026118
parentdf229cff0d5b96e146f3f11441f714e8e240cad0 (diff)
Added CPack packaging, pkg-config and CMake version files. (#298)
-rw-r--r--CMakeLists.txt2
-rw-r--r--cmake/cxxopts.cmake47
-rw-r--r--packaging/cxxopts-config.cmake.in (renamed from cxxopts-config.cmake.in)0
-rw-r--r--packaging/pkgconfig.pc.in7
4 files changed, 53 insertions, 3 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7db33e6..4c1a686 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -21,6 +21,8 @@ cmake_minimum_required(VERSION 3.1...3.19)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/")
include(cxxopts)
+set("PROJECT_DESCRIPTION" "A header-only lightweight C++ command line option parser")
+set("PROJECT_HOMEPAGE_URL" "https://github.com/jarro2783/cxxopts")
# Get the version of the library
cxxopts_getversion(VERSION)
diff --git a/cmake/cxxopts.cmake b/cmake/cxxopts.cmake
index e65c4b5..46e87ba 100644
--- a/cmake/cxxopts.cmake
+++ b/cmake/cxxopts.cmake
@@ -87,18 +87,27 @@ endfunction()
# Helper function to ecapsulate install logic
function(cxxopts_install_logic)
- set(CXXOPTS_CMAKE_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/cxxopts" CACHE STRING "Installation directory for cmake files, relative to ${CMAKE_INSTALL_PREFIX}.")
+ string(REPLACE "/${CMAKE_LIBRARY_ARCHITECTURE}" "" CMAKE_INSTALL_LIBDIR_ARCHIND "${CMAKE_INSTALL_LIBDIR}")
+ set(CXXOPTS_CMAKE_DIR "${CMAKE_INSTALL_LIBDIR_ARCHIND}/cmake/cxxopts" CACHE STRING "Installation directory for cmake files, relative to ${CMAKE_INSTALL_PREFIX}.")
set(version_config "${PROJECT_BINARY_DIR}/cxxopts-config-version.cmake")
set(project_config "${PROJECT_BINARY_DIR}/cxxopts-config.cmake")
set(targets_export_name cxxopts-targets)
+ set(PackagingTemplatesDir "${PROJECT_SOURCE_DIR}/packaging")
+
+
+ if(${CMAKE_VERSION} VERSION_GREATER "3.14")
+ set(OPTIONAL_ARCH_INDEPENDENT "ARCH_INDEPENDENT")
+ endif()
# Generate the version, config and target files into the build directory.
write_basic_package_version_file(
${version_config}
VERSION ${VERSION}
- COMPATIBILITY AnyNewerVersion)
+ COMPATIBILITY AnyNewerVersion
+ ${OPTIONAL_ARCH_INDEPENDENT}
+ )
configure_package_config_file(
- ${PROJECT_SOURCE_DIR}/cxxopts-config.cmake.in
+ ${PackagingTemplatesDir}/cxxopts-config.cmake.in
${project_config}
INSTALL_DESTINATION ${CXXOPTS_CMAKE_DIR})
export(TARGETS cxxopts NAMESPACE cxxopts::
@@ -114,4 +123,36 @@ function(cxxopts_install_logic)
# Install the header file and export the target
install(TARGETS cxxopts EXPORT ${targets_export_name} DESTINATION ${CMAKE_INSTALL_LIBDIR})
install(FILES ${PROJECT_SOURCE_DIR}/include/cxxopts.hpp DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
+
+
+ set(CPACK_PACKAGE_NAME "${PROJECT_NAME}")
+ set(CPACK_PACKAGE_VENDOR "cxxopt developers")
+ set(CPACK_PACKAGE_DESCRIPTION "${PROJECT_DESCRIPTION}")
+ set(CPACK_DEBIAN_PACKAGE_NAME "${CPACK_PACKAGE_NAME}")
+ set(CPACK_RPM_PACKAGE_NAME "${CPACK_PACKAGE_NAME}")
+ set(CPACK_PACKAGE_HOMEPAGE_URL "${PROJECT_HOMEPAGE_URL}")
+ set(CPACK_PACKAGE_MAINTAINER "${CPACK_PACKAGE_VENDOR}")
+ set(CPACK_DEBIAN_PACKAGE_MAINTAINER "${CPACK_PACKAGE_MAINTAINER}")
+ set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
+ set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
+
+ set(CPACK_DEBIAN_PACKAGE_NAME "lib${PROJECT_NAME}-dev")
+ set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6-dev")
+ set(CPACK_DEBIAN_PACKAGE_SUGGESTS "cmake, pkg-config, pkg-conf")
+
+ set(CPACK_RPM_PACKAGE_NAME "lib${PROJECT_NAME}-devel")
+ set(CPACK_RPM_PACKAGE_SUGGESTS "${CPACK_DEBIAN_PACKAGE_SUGGESTS}")
+
+ set(CPACK_DEB_COMPONENT_INSTALL ON)
+ set(CPACK_RPM_COMPONENT_INSTALL ON)
+ set(CPACK_NSIS_COMPONENT_INSTALL ON)
+ set(CPACK_DEBIAN_COMPRESSION_TYPE "xz")
+
+ set(PKG_CONFIG_FILE_NAME "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc")
+ configure_file("${PackagingTemplatesDir}/pkgconfig.pc.in" "${PKG_CONFIG_FILE_NAME}" @ONLY)
+ install(FILES "${PKG_CONFIG_FILE_NAME}"
+ DESTINATION "${CMAKE_INSTALL_LIBDIR_ARCHIND}/pkgconfig"
+ )
+
+ include(CPack)
endfunction()
diff --git a/cxxopts-config.cmake.in b/packaging/cxxopts-config.cmake.in
index c9efaf1..c9efaf1 100644
--- a/cxxopts-config.cmake.in
+++ b/packaging/cxxopts-config.cmake.in
diff --git a/packaging/pkgconfig.pc.in b/packaging/pkgconfig.pc.in
new file mode 100644
index 0000000..9b6a44c
--- /dev/null
+++ b/packaging/pkgconfig.pc.in
@@ -0,0 +1,7 @@
+prefix=@CMAKE_INSTALL_PREFIX@
+includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
+
+Name: @PROJECT_NAME@
+Description: @PROJECT_DESCRIPTION@
+Version: @PROJECT_VERSION@
+Cflags: -I${includedir}