mirror of
https://github.com/arun11299/cpp-jwt.git
synced 2025-05-14 16:58:34 +00:00
Merge pull request #64 from gocarlos/build--install-cmakes-find-package-files
build: install cmakes find package files
This commit is contained in:
commit
67504faf29
4 changed files with 63 additions and 13 deletions
2
.github/workflows/main.yml
vendored
2
.github/workflows/main.yml
vendored
|
@ -1,6 +1,6 @@
|
||||||
name: CMake
|
name: CMake
|
||||||
|
|
||||||
on: [push]
|
on: [push, pull_request]
|
||||||
|
|
||||||
env:
|
env:
|
||||||
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
|
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
cmake_minimum_required(VERSION 3.5.0)
|
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_EXAMPLES "build examples" ON)
|
||||||
option(CPP_JWT_BUILD_TESTS "build tests" ON)
|
option(CPP_JWT_BUILD_TESTS "build tests" ON)
|
||||||
|
@ -38,9 +38,8 @@ add_library(${PROJECT_NAME} INTERFACE)
|
||||||
target_include_directories(
|
target_include_directories(
|
||||||
${PROJECT_NAME}
|
${PROJECT_NAME}
|
||||||
INTERFACE $<BUILD_INTERFACE:${${PROJECT_NAME}_SOURCE_DIR}/include>
|
INTERFACE $<BUILD_INTERFACE:${${PROJECT_NAME}_SOURCE_DIR}/include>
|
||||||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
|
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
|
||||||
${OpenSSL_INCLUDE_DIR})
|
target_link_libraries(${PROJECT_NAME} INTERFACE OpenSSL::SSL)
|
||||||
target_link_libraries(${PROJECT_NAME} INTERFACE ${OpenSSL_LIBRARIES})
|
|
||||||
if(NOT CPP_JWT_USE_VENDORED_NLOHMANN_JSON)
|
if(NOT CPP_JWT_USE_VENDORED_NLOHMANN_JSON)
|
||||||
target_link_libraries(${PROJECT_NAME} INTERFACE nlohmann_json::nlohmann_json)
|
target_link_libraries(${PROJECT_NAME} INTERFACE nlohmann_json::nlohmann_json)
|
||||||
else()
|
else()
|
||||||
|
@ -76,21 +75,45 @@ endif()
|
||||||
# ##############################################################################
|
# ##############################################################################
|
||||||
|
|
||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
|
include(CMakePackageConfigHelpers)
|
||||||
|
set(CPP_JWT_CONFIG_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
|
||||||
|
|
||||||
install(
|
install(
|
||||||
TARGETS ${PROJECT_NAME}
|
TARGETS ${PROJECT_NAME}
|
||||||
EXPORT ${PROJECT_NAME}_Targets
|
EXPORT ${PROJECT_NAME}Targets
|
||||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
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
|
install(
|
||||||
DESTINATION include/jwt)
|
DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/jwt/detail
|
||||||
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/jwt/impl
|
DESTINATION include/jwt
|
||||||
DESTINATION include/jwt)
|
COMPONENT dev)
|
||||||
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/jwt/json
|
install(
|
||||||
DESTINATION include/jwt)
|
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(
|
install(
|
||||||
DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/jwt/
|
DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/jwt/
|
||||||
DESTINATION include/jwt
|
DESTINATION include/jwt
|
||||||
|
COMPONENT dev
|
||||||
FILES_MATCHING
|
FILES_MATCHING
|
||||||
PATTERN "*.hpp")
|
PATTERN "*.hpp")
|
||||||
|
|
19
README.md
19
README.md
|
@ -208,7 +208,7 @@ The library has 2 sets of APIs for encoding and decoding:
|
||||||
Tested with <strong>clang-5.0</strong> and <strong>g++-6.4</strong>.
|
Tested with <strong>clang-5.0</strong> and <strong>g++-6.4</strong>.
|
||||||
With issue#12, <strong>VS2017</strong> is also supported.
|
With issue#12, <strong>VS2017</strong> is also supported.
|
||||||
|
|
||||||
## Installation
|
## Building the library
|
||||||
|
|
||||||
### using conan
|
### using conan
|
||||||
|
|
||||||
|
@ -232,6 +232,23 @@ cmake ..
|
||||||
cmake --build . -j
|
cmake --build . -j
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Consuming the library
|
||||||
|
|
||||||
|
this library is uses cmake as a build system.
|
||||||
|
```cmake
|
||||||
|
# you can use cmake's `find_package` after installation or `add_subdirectory` when vendoring this repository
|
||||||
|
|
||||||
|
find_package(cpp-jwt REQUIRED)
|
||||||
|
# or
|
||||||
|
add_subdirectory(third_party/cpp-jwt)
|
||||||
|
|
||||||
|
add_executable(main main.cpp)
|
||||||
|
target_link_libraries(main cpp-jwt::cpp-jwt)
|
||||||
|
```
|
||||||
|
|
||||||
|
you can also use this library as a conan package, its available in the [conan center](https://conan.io/center/cpp-jwt/1.2/?user=_&channel=_):
|
||||||
|
just add `cpp-jwt[>=1.2]` to your conanfile.txt
|
||||||
|
|
||||||
## Parameters
|
## Parameters
|
||||||
There are two sets of parameters which can be used for creating `jwt_object` and for decoding.
|
There are two sets of parameters which can be used for creating `jwt_object` and for decoding.
|
||||||
All the parameters are basically a function which returns an instance of a type which are modelled after <code>ParameterConcept</code> (see <code>jwt::detail::meta::is_parameter_concept</code>).
|
All the parameters are basically a function which returns an instance of a type which are modelled after <code>ParameterConcept</code> (see <code>jwt::detail::meta::is_parameter_concept</code>).
|
||||||
|
|
10
cmake/Config.cmake.in
Normal file
10
cmake/Config.cmake.in
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
@PACKAGE_INIT@
|
||||||
|
|
||||||
|
if(NOT @CPP_JWT_USE_VENDORED_NLOHMANN_JSON@)
|
||||||
|
find_package(nlohmann_json REQUIRED)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_package(OpenSSL REQUIRED)
|
||||||
|
|
||||||
|
include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake")
|
||||||
|
check_required_components("@PROJECT_NAME@")
|
Loading…
Add table
Add a link
Reference in a new issue