From af21c2e26f190b6bc6f490bf78d13d05b78dc729 Mon Sep 17 00:00:00 2001 From: Carlos Gomes Martinho Date: Fri, 8 May 2020 02:35:53 +0200 Subject: [PATCH] build: install cmakes find package files --- CMakeLists.txt | 45 ++++++++++++++++++++++++++++++++----------- cmake/Config.cmake.in | 4 ++++ 2 files changed, 38 insertions(+), 11 deletions(-) create mode 100644 cmake/Config.cmake.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 9122f1c..2f35431 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.5.0) -project(cpp-jwt) +project(cpp-jwt VERSION 1.2.0) option(CPP_JWT_BUILD_EXAMPLES "build examples" ON) option(CPP_JWT_BUILD_TESTS "build tests" ON) @@ -38,9 +38,8 @@ add_library(${PROJECT_NAME} INTERFACE) target_include_directories( ${PROJECT_NAME} INTERFACE $ - $ - ${OpenSSL_INCLUDE_DIR}) -target_link_libraries(${PROJECT_NAME} INTERFACE ${OpenSSL_LIBRARIES}) + $) +target_link_libraries(${PROJECT_NAME} INTERFACE OpenSSL::SSL) if(NOT CPP_JWT_USE_VENDORED_NLOHMANN_JSON) target_link_libraries(${PROJECT_NAME} INTERFACE nlohmann_json::nlohmann_json) else() @@ -76,21 +75,45 @@ endif() # ############################################################################## include(GNUInstallDirs) +include(CMakePackageConfigHelpers) +set(CPP_JWT_CONFIG_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}) + install( TARGETS ${PROJECT_NAME} - EXPORT ${PROJECT_NAME}_Targets + EXPORT ${PROJECT_NAME}Targets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) +install( + EXPORT ${PROJECT_NAME}Targets + DESTINATION ${CPP_JWT_CONFIG_INSTALL_DIR} + NAMESPACE ${PROJECT_NAME}:: + COMPONENT dev) +configure_package_config_file(cmake/Config.cmake.in ${PROJECT_NAME}Config.cmake + INSTALL_DESTINATION ${CPP_JWT_CONFIG_INSTALL_DIR}) +write_basic_package_version_file(${PROJECT_NAME}ConfigVersion.cmake + COMPATIBILITY SameMajorVersion) +install( + FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake + ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake + DESTINATION ${CPP_JWT_CONFIG_INSTALL_DIR} + COMPONENT dev) -install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/jwt/detail - DESTINATION include/jwt) -install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/jwt/impl - DESTINATION include/jwt) -install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/jwt/json - DESTINATION include/jwt) +install( + DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/jwt/detail + DESTINATION include/jwt + COMPONENT dev) +install( + DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/jwt/impl + DESTINATION include/jwt + COMPONENT dev) +install( + DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/jwt/json + DESTINATION include/jwt + COMPONENT dev) install( DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/jwt/ DESTINATION include/jwt + COMPONENT dev FILES_MATCHING PATTERN "*.hpp") diff --git a/cmake/Config.cmake.in b/cmake/Config.cmake.in new file mode 100644 index 0000000..ff0fa67 --- /dev/null +++ b/cmake/Config.cmake.in @@ -0,0 +1,4 @@ +@PACKAGE_INIT@ + +include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake") +check_required_components("@PROJECT_NAME@") \ No newline at end of file