af76508fe7
This introduces a clear separation between test data and test binaries. Test data is moved into test/data, and the test binaries move into test/src. A new CMake script specific to building the tests is introduced in /test to slightly clean up the toplevel one. As well as tidying things up, this makes the next step trivial...
52 lines
1.9 KiB
CMake
52 lines
1.9 KiB
CMake
cmake_minimum_required(VERSION 3.0)
|
|
|
|
# define the project
|
|
project(nlohmann_json VERSION 2.0.0 LANGUAGES CXX)
|
|
|
|
option(BuildTests "Build the unit tests" ON)
|
|
|
|
# define project variables
|
|
set(JSON_TARGET_NAME ${PROJECT_NAME})
|
|
set(JSON_PACKAGE_NAME ${JSON_TARGET_NAME})
|
|
set(JSON_TARGETS_FILENAME "${JSON_PACKAGE_NAME}Targets.cmake")
|
|
set(JSON_CONFIG_FILENAME "${JSON_PACKAGE_NAME}Config.cmake")
|
|
set(JSON_CONFIGVERSION_FILENAME "${JSON_PACKAGE_NAME}ConfigVersion.cmake")
|
|
set(JSON_CONFIG_DESTINATION "cmake")
|
|
set(JSON_INCLUDE_DESTINATION "include/nlohmann")
|
|
|
|
# create and configure the library target
|
|
add_library(${JSON_TARGET_NAME} INTERFACE)
|
|
target_include_directories(${JSON_TARGET_NAME} INTERFACE
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
|
|
$<INSTALL_INTERFACE:${JSON_INCLUDE_DESTINATION}>)
|
|
|
|
# create and configure the unit test target
|
|
if (BuildTests)
|
|
add_subdirectory(test)
|
|
endif()
|
|
|
|
# generate a config and config version file for the package
|
|
include(CMakePackageConfigHelpers)
|
|
configure_package_config_file("cmake/config.cmake.in"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/${JSON_CONFIG_FILENAME}"
|
|
INSTALL_DESTINATION ${JSON_CONFIG_DESTINATION})
|
|
write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/${JSON_CONFIGVERSION_FILENAME}"
|
|
VERSION ${PROJECT_VERSION}
|
|
COMPATIBILITY SameMajorVersion)
|
|
|
|
# export the library target and store build directory in package registry
|
|
export(TARGETS ${JSON_TARGET_NAME}
|
|
FILE "${CMAKE_CURRENT_BINARY_DIR}/${JSON_TARGETS_FILENAME}")
|
|
export(PACKAGE ${JSON_PACKAGE_NAME})
|
|
|
|
# install library target and config files
|
|
install(TARGETS ${JSON_TARGET_NAME}
|
|
EXPORT ${JSON_PACKAGE_NAME})
|
|
install(FILES "src/json.hpp"
|
|
DESTINATION ${JSON_INCLUDE_DESTINATION})
|
|
install(EXPORT ${JSON_PACKAGE_NAME}
|
|
FILE ${JSON_TARGETS_FILENAME}
|
|
DESTINATION ${JSON_CONFIG_DESTINATION})
|
|
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${JSON_CONFIG_FILENAME}"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/${JSON_CONFIGVERSION_FILENAME}"
|
|
DESTINATION ${JSON_CONFIG_DESTINATION})
|