Added CPack packaging, pkg-config and CMake version files. (#298)
This commit is contained in:
parent
df229cff0d
commit
5eca8a3001
@ -21,6 +21,8 @@ cmake_minimum_required(VERSION 3.1...3.19)
|
|||||||
|
|
||||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/")
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/")
|
||||||
include(cxxopts)
|
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
|
# Get the version of the library
|
||||||
cxxopts_getversion(VERSION)
|
cxxopts_getversion(VERSION)
|
||||||
|
|||||||
@ -87,18 +87,27 @@ endfunction()
|
|||||||
|
|
||||||
# Helper function to ecapsulate install logic
|
# Helper function to ecapsulate install logic
|
||||||
function(cxxopts_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(version_config "${PROJECT_BINARY_DIR}/cxxopts-config-version.cmake")
|
||||||
set(project_config "${PROJECT_BINARY_DIR}/cxxopts-config.cmake")
|
set(project_config "${PROJECT_BINARY_DIR}/cxxopts-config.cmake")
|
||||||
set(targets_export_name cxxopts-targets)
|
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.
|
# Generate the version, config and target files into the build directory.
|
||||||
write_basic_package_version_file(
|
write_basic_package_version_file(
|
||||||
${version_config}
|
${version_config}
|
||||||
VERSION ${VERSION}
|
VERSION ${VERSION}
|
||||||
COMPATIBILITY AnyNewerVersion)
|
COMPATIBILITY AnyNewerVersion
|
||||||
|
${OPTIONAL_ARCH_INDEPENDENT}
|
||||||
|
)
|
||||||
configure_package_config_file(
|
configure_package_config_file(
|
||||||
${PROJECT_SOURCE_DIR}/cxxopts-config.cmake.in
|
${PackagingTemplatesDir}/cxxopts-config.cmake.in
|
||||||
${project_config}
|
${project_config}
|
||||||
INSTALL_DESTINATION ${CXXOPTS_CMAKE_DIR})
|
INSTALL_DESTINATION ${CXXOPTS_CMAKE_DIR})
|
||||||
export(TARGETS cxxopts NAMESPACE cxxopts::
|
export(TARGETS cxxopts NAMESPACE cxxopts::
|
||||||
@ -114,4 +123,36 @@ function(cxxopts_install_logic)
|
|||||||
# Install the header file and export the target
|
# Install the header file and export the target
|
||||||
install(TARGETS cxxopts EXPORT ${targets_export_name} DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
install(TARGETS cxxopts EXPORT ${targets_export_name} DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||||
install(FILES ${PROJECT_SOURCE_DIR}/include/cxxopts.hpp DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
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()
|
endfunction()
|
||||||
|
|||||||
7
packaging/pkgconfig.pc.in
Normal file
7
packaging/pkgconfig.pc.in
Normal file
@ -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}
|
||||||
Loading…
Reference in New Issue
Block a user