Skip to content

Commit 7d45b04

Browse files
committed
Added packaging using CPack and pkg-config.
Fixed installation dir of configs - it must be arch-independent for a header-only library.
1 parent 1e52a80 commit 7d45b04

File tree

3 files changed

+49
-6
lines changed

3 files changed

+49
-6
lines changed

CMakeLists.txt

Lines changed: 42 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
cmake_minimum_required(VERSION 3.1)
22

3-
project(argh)
3+
project(argh VERSION 1.3.1)
4+
set(PROJECT_DESCRIPTION "A minimalist argument handler.")
5+
set(PROJECT_HOMEPAGE_URL "https://github.com/adishavit/argh")
46

57
set(CMAKE_CXX_STANDARD 11)
68

@@ -35,20 +37,54 @@ add_library(argh INTERFACE)
3537
target_include_directories(argh INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}> $<INSTALL_INTERFACE:include>)
3638

3739
if(ARGH_MASTER_PROJECT)
38-
install(TARGETS argh EXPORT arghTargets)
40+
install(TARGETS argh EXPORT argh)
3941

4042
include(GNUInstallDirs)
43+
string(REPLACE "/${CMAKE_LIBRARY_ARCHITECTURE}" "" CMAKE_INSTALL_LIBDIR_ARCHIND "${CMAKE_INSTALL_LIBDIR}")
4144
install(FILES "${CMAKE_CURRENT_LIST_DIR}/argh.h" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
4245
install(FILES "${CMAKE_CURRENT_LIST_DIR}/LICENSE" DESTINATION ${CMAKE_INSTALL_DOCDIR})
4346
install(FILES "${CMAKE_CURRENT_LIST_DIR}/README.md" DESTINATION ${CMAKE_INSTALL_DOCDIR})
47+
set(PackagingTemplatesDir "${CMAKE_CURRENT_LIST_DIR}/packaging")
4448

4549
if(CMAKE_SYSTEM_NAME STREQUAL Linux)
4650
# this might be a bit too restrictive, since for other (BSD, ...) this might apply also
4751
# but this can be fixed later in extra pull requests from people on the platform
48-
install(FILES argh-config.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/argh)
49-
install(EXPORT arghTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/argh)
52+
install(FILES "${PackagingTemplatesDir}/argh-config.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR_ARCHIND}/cmake/argh)
53+
install(EXPORT argh DESTINATION ${CMAKE_INSTALL_LIBDIR_ARCHIND}/cmake/argh)
5054
else()
51-
install(FILES argh-config.cmake DESTINATION CMake)
52-
install(EXPORT arghTargets DESTINATION CMake)
55+
install(FILES "${PackagingTemplatesDir}/argh-config.cmake" DESTINATION CMake)
56+
install(EXPORT argh DESTINATION CMake)
5357
endif()
58+
59+
set(CPACK_PACKAGE_NAME "${PROJECT_NAME}")
60+
set(CPACK_PACKAGE_VENDOR "Argh developers")
61+
set(CPACK_PACKAGE_DESCRIPTION "${PROJECT_DESCRIPTION}")
62+
set(CPACK_DEBIAN_PACKAGE_NAME "${CPACK_PACKAGE_NAME}")
63+
set(CPACK_RPM_PACKAGE_NAME "${CPACK_PACKAGE_NAME}")
64+
set(CPACK_PACKAGE_HOMEPAGE_URL "${PROJECT_HOMEPAGE_URL}")
65+
set(CPACK_PACKAGE_MAINTAINER "${CPACK_PACKAGE_VENDOR}")
66+
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "${CPACK_PACKAGE_MAINTAINER}")
67+
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
68+
set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
69+
70+
set(CPACK_DEBIAN_PACKAGE_NAME "lib${PROJECT_NAME}-dev")
71+
set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6-dev")
72+
set(CPACK_DEBIAN_PACKAGE_SUGGESTS "cmake, pkg-config, pkg-conf")
73+
74+
set(CPACK_RPM_PACKAGE_NAME "lib${PROJECT_NAME}-devel")
75+
set(CPACK_RPM_PACKAGE_SUGGESTS "${CPACK_DEBIAN_PACKAGE_SUGGESTS}")
76+
77+
set(CPACK_DEB_COMPONENT_INSTALL ON)
78+
set(CPACK_RPM_COMPONENT_INSTALL ON)
79+
set(CPACK_NSIS_COMPONENT_INSTALL ON)
80+
set(CPACK_DEBIAN_COMPRESSION_TYPE "xz")
81+
82+
set(PKG_CONFIG_FILE_NAME "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc")
83+
message(STATUS "PROJECT_DESCRIPTION ${PROJECT_DESCRIPTION}")
84+
configure_file("${PackagingTemplatesDir}/pkgconfig.pc.in" "${PKG_CONFIG_FILE_NAME}" @ONLY)
85+
install(FILES "${PKG_CONFIG_FILE_NAME}"
86+
DESTINATION "${CMAKE_INSTALL_LIBDIR_ARCHIND}/pkgconfig"
87+
)
88+
89+
include(CPack)
5490
endif()

packaging/pkgconfig.pc.in

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
prefix=@CMAKE_INSTALL_PREFIX@
2+
includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
3+
4+
Name: @PROJECT_NAME@
5+
Description: @PROJECT_DESCRIPTION@
6+
Version: @PROJECT_VERSION@
7+
Cflags: -I${includedir}

0 commit comments

Comments
 (0)