CMakeLists.txt 2.0 KB
Newer Older
1
cmake_minimum_required(VERSION 3.0)
N
Niels 已提交
2

3
# define the project
N
Niels 已提交
4
project(nlohmann_json VERSION 2.0.5 LANGUAGES CXX)
N
Niels 已提交
5

R
Robert Marki 已提交
6 7
enable_testing()

8 9
option(BuildTests "Build the unit tests" ON)

10
# define project variables
11 12 13
set(JSON_TARGET_NAME ${PROJECT_NAME})
set(JSON_PACKAGE_NAME ${JSON_TARGET_NAME})
set(JSON_TARGETS_FILENAME "${JSON_PACKAGE_NAME}Targets.cmake")
14 15 16 17
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")
N
Niels 已提交
18

19
# create and configure the library target
20 21
add_library(${JSON_TARGET_NAME} INTERFACE)
target_include_directories(${JSON_TARGET_NAME} INTERFACE
22 23
  $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
  $<INSTALL_INTERFACE:${JSON_INCLUDE_DESTINATION}>)
24

25
# create and configure the unit test target
26
if (BuildTests)
27
    add_subdirectory(test)
28
endif()
29

30 31 32
# generate a config and config version file for the package
include(CMakePackageConfigHelpers)
configure_package_config_file("cmake/config.cmake.in"
33
    "${CMAKE_CURRENT_BINARY_DIR}/${JSON_CONFIG_FILENAME}"
34
    INSTALL_DESTINATION ${JSON_CONFIG_DESTINATION})
35
write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/${JSON_CONFIGVERSION_FILENAME}"
36 37 38 39
    VERSION ${PROJECT_VERSION}
    COMPATIBILITY SameMajorVersion)

# export the library target and store build directory in package registry
40
export(TARGETS ${JSON_TARGET_NAME}
41
	FILE "${CMAKE_CURRENT_BINARY_DIR}/${JSON_TARGETS_FILENAME}")
42
export(PACKAGE ${JSON_PACKAGE_NAME})
43 44 45 46 47 48 49 50 51

# 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})
52 53
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${JSON_CONFIG_FILENAME}"
	"${CMAKE_CURRENT_BINARY_DIR}/${JSON_CONFIGVERSION_FILENAME}"
54
	DESTINATION ${JSON_CONFIG_DESTINATION})