|
1 | 1 | cmake_minimum_required(VERSION 3.4 FATAL_ERROR) |
2 | 2 |
|
3 | | -project(CLI11 LANGUAGES CXX) |
| 3 | +set(VERSION_REGEX "#define CLI11_VERSION[ \t]+\"(.+)\"") |
4 | 4 |
|
5 | | -SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH}) |
| 5 | +# Read in the line containing the version |
| 6 | +file(STRINGS "${CMAKE_CURRENT_SOURCE_DIR}/include/CLI/Version.hpp" |
| 7 | + VERSION_STRING REGEX ${VERSION_REGEX}) |
6 | 8 |
|
| 9 | +# Pick out just the version |
| 10 | +string(REGEX REPLACE ${VERSION_REGEX} "\\1" VERSION_STRING "${VERSION_STRING}") |
| 11 | + |
| 12 | +project(CLI11 LANGUAGES CXX VERSION ${VERSION_STRING}) |
| 13 | + |
| 14 | +set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH}) |
| 15 | + |
| 16 | +# User settable |
7 | 17 | set(CLI_CXX_STD "11" CACHE STRING "The CMake standard to require") |
8 | 18 |
|
9 | 19 | if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME) |
@@ -70,6 +80,18 @@ install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/CLI DESTINATION include) |
70 | 80 | # to Config.cmake (otherwise we'd have a custom config and would |
71 | 81 | # import Targets.cmake |
72 | 82 |
|
| 83 | +# Add the version in a CMake readable way |
| 84 | +include(CMakePackageConfigHelpers) |
| 85 | +write_basic_package_version_file( |
| 86 | + CLI11ConfigVersion.cmake |
| 87 | + VERSION ${CLI11_VERSION} |
| 88 | + COMPATIBILITY AnyNewerVersion |
| 89 | + ) |
| 90 | + |
| 91 | +# Make version available in the install |
| 92 | +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/CLI11ConfigVersion.cmake" |
| 93 | + DESTINATION lib/cmake/CLI11) |
| 94 | + |
73 | 95 | # Make an export target |
74 | 96 | install(TARGETS CLI11 |
75 | 97 | EXPORT CLI11Targets) |
@@ -129,3 +151,24 @@ if(CLI_EXAMPLES) |
129 | 151 | add_subdirectory(examples) |
130 | 152 | endif() |
131 | 153 |
|
| 154 | +# Packaging support |
| 155 | +set(CPACK_PACKAGE_VENDOR "github.com/CLIUtils/CLI11") |
| 156 | +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Command line interface") |
| 157 | +set(CPACK_PACKAGE_VERSION_MAJOR ${CLI11_VERSION_MAJOR}) |
| 158 | +set(CPACK_PACKAGE_VERSION_MINOR ${CLI11_VERSION_MINOR}) |
| 159 | +set(CPACK_PACKAGE_VERSION_PATCH ${CLI11_VERSION_PATCH}) |
| 160 | +set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") |
| 161 | +set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md") |
| 162 | +set(CPACK_SOURCE_GENERATOR "TGZ;ZIP") |
| 163 | +# CPack collects *everything* except what's listed here. |
| 164 | +set(CPACK_SOURCE_IGNORE_FILES |
| 165 | + /.git |
| 166 | + /dist |
| 167 | + /.*build.* |
| 168 | + /\\\\.DS_Store |
| 169 | + /.*\\\\.egg-info |
| 170 | + /var |
| 171 | + /Pipfile.*$ |
| 172 | +) |
| 173 | +include(CPack) |
| 174 | + |
0 commit comments