Skip to content

Commit af21c2e

Browse files
committed
build: install cmakes find package files
1 parent b684554 commit af21c2e

File tree

2 files changed

+38
-11
lines changed

2 files changed

+38
-11
lines changed

CMakeLists.txt

+34-11
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
cmake_minimum_required(VERSION 3.5.0)
2-
project(cpp-jwt)
2+
project(cpp-jwt VERSION 1.2.0)
33

44
option(CPP_JWT_BUILD_EXAMPLES "build examples" ON)
55
option(CPP_JWT_BUILD_TESTS "build tests" ON)
@@ -38,9 +38,8 @@ add_library(${PROJECT_NAME} INTERFACE)
3838
target_include_directories(
3939
${PROJECT_NAME}
4040
INTERFACE $<BUILD_INTERFACE:${${PROJECT_NAME}_SOURCE_DIR}/include>
41-
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
42-
${OpenSSL_INCLUDE_DIR})
43-
target_link_libraries(${PROJECT_NAME} INTERFACE ${OpenSSL_LIBRARIES})
41+
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
42+
target_link_libraries(${PROJECT_NAME} INTERFACE OpenSSL::SSL)
4443
if(NOT CPP_JWT_USE_VENDORED_NLOHMANN_JSON)
4544
target_link_libraries(${PROJECT_NAME} INTERFACE nlohmann_json::nlohmann_json)
4645
else()
@@ -76,21 +75,45 @@ endif()
7675
# ##############################################################################
7776

7877
include(GNUInstallDirs)
78+
include(CMakePackageConfigHelpers)
79+
set(CPP_JWT_CONFIG_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
80+
7981
install(
8082
TARGETS ${PROJECT_NAME}
81-
EXPORT ${PROJECT_NAME}_Targets
83+
EXPORT ${PROJECT_NAME}Targets
8284
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
8385
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
8486
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
87+
install(
88+
EXPORT ${PROJECT_NAME}Targets
89+
DESTINATION ${CPP_JWT_CONFIG_INSTALL_DIR}
90+
NAMESPACE ${PROJECT_NAME}::
91+
COMPONENT dev)
92+
configure_package_config_file(cmake/Config.cmake.in ${PROJECT_NAME}Config.cmake
93+
INSTALL_DESTINATION ${CPP_JWT_CONFIG_INSTALL_DIR})
94+
write_basic_package_version_file(${PROJECT_NAME}ConfigVersion.cmake
95+
COMPATIBILITY SameMajorVersion)
96+
install(
97+
FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
98+
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
99+
DESTINATION ${CPP_JWT_CONFIG_INSTALL_DIR}
100+
COMPONENT dev)
85101

86-
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/jwt/detail
87-
DESTINATION include/jwt)
88-
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/jwt/impl
89-
DESTINATION include/jwt)
90-
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/jwt/json
91-
DESTINATION include/jwt)
102+
install(
103+
DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/jwt/detail
104+
DESTINATION include/jwt
105+
COMPONENT dev)
106+
install(
107+
DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/jwt/impl
108+
DESTINATION include/jwt
109+
COMPONENT dev)
110+
install(
111+
DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/jwt/json
112+
DESTINATION include/jwt
113+
COMPONENT dev)
92114
install(
93115
DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/jwt/
94116
DESTINATION include/jwt
117+
COMPONENT dev
95118
FILES_MATCHING
96119
PATTERN "*.hpp")

cmake/Config.cmake.in

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
@PACKAGE_INIT@
2+
3+
include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake")
4+
check_required_components("@PROJECT_NAME@")

0 commit comments

Comments
 (0)