mirror of
https://github.com/nlohmann/json.git
synced 2024-12-21 12:05:30 +08:00
c331706644
Github issue: https://github.com/nlohmann/json/issues/2073 nlohmann::json documents 2 way of depending on it using CMake 1) Copy-paste the project/source into your own project. 2) Install nlohman::json and then use find_package. (1) pollutes your git repository, (2) requires everyone to install the dependencies themselves. Since 2018, CMake provide some kind of 'package manager' features using [FetchContent](https://cmake.org/cmake/help/v3.17/module/FetchContent.html) It gives the following: ~~~cmake include(FetchContent) FetchContent_Declare(json GIT_REPOSITORY https://github.com/nlohmann/json GIT_TAG v3.7.3) FetchContent_GetProperties(json) if(NOT json_POPULATED) FetchContent_Populate(json) add_subdirectory( ${json_SOURCE_DIR} ${json_BINARY_DIR} EXCLUDE_FROM_ALL) endif() ~~~ Then declares the dependency in the target using it: ~~~cmake target_link_library(my_project PRIVATE nlohmann_json::nlohmann_json ~~~ This patch updates the documentation and provides tests.
22 lines
588 B
CMake
22 lines
588 B
CMake
cmake_minimum_required(VERSION 3.11)
|
|
|
|
project(DummyImport CXX)
|
|
|
|
include(FetchContent)
|
|
|
|
FetchContent_Declare(json
|
|
GIT_REPOSITORY ${CMAKE_CURRENT_SOURCE_DIR}/../../..
|
|
GIT_TAG HEAD)
|
|
|
|
FetchContent_GetProperties(json)
|
|
if(NOT json_POPULATED)
|
|
FetchContent_Populate(json)
|
|
add_subdirectory(${json_SOURCE_DIR} ${json_BINARY_DIR} EXCLUDE_FROM_ALL)
|
|
endif()
|
|
|
|
add_executable(with_namespace_target main.cpp)
|
|
target_link_libraries(with_namespace_target nlohmann_json::nlohmann_json)
|
|
|
|
add_executable(without_namespace_target main.cpp)
|
|
target_link_libraries(without_namespace_target nlohmann_json)
|