如何从 fetchcontent 使用 jsoncpp
How to use jsoncpp from fetchcontent
我正在制作一个程序,基本上是对几台不同机器的压力测试,我必须将测试结果写入 json 格式。
因为我不想在每台机器上手动安装 jsoncpp,所以我决定在 CMakeLists 文件中使用 Fetchcontent:
cmake_minimum_required(VERSION 3.15)
project(Programma)
include(FetchContent)
FetchContent_Declare(
jsoncpp
GIT_REPOSITORY https://github.com/open-source-parsers/jsoncpp.git
GIT_TAG master
)
FetchContent_GetProperties(jsoncpp)
if (NOT jsoncpp_POPULATED)
FetchContent_Populate(jsoncpp)
add_subdirectory(${jsoncpp_SOURCE_DIR} ${jsoncpp_BINARY_DIR})
message(${jsoncpp_SOURCE_DIR})
message(${jsoncpp_BINARY_DIR})
endif ()
#FetchContent_MakeAvailable(jsoncpp)
set(CMAKE_CXX_STANDARD 17)
add_executable(Programma main.cpp)
add_library(TestSubjects.cpp TransformTests.cpp FoldTests.cpp
TestResults.h SortTests.cpp FindTests.cpp)
target_link_libraries(Programma Tests jsoncpp)
但我尝试了几个 header 包括 <json.h>
<jsoncpp/json.h>
json/json.h>
但其中 none 有效。我做错了什么?
在构建过程中,项目 jsoncpp
未提供 jsoncpp
目标 。相反,它为不同类型的库提供单独的目标:
jsoncpp_static
对于 STATIC 库,
jsoncpp_lib
共享库,
jsoncpp_object
对象库。
默认情况下,所有 3 种库类型都已构建,因此您可以为 link 选择其中的 任何,其中:
target_link_libraries(Programma jsoncpp_lib)
此外,正确的包含指令是
#include <json/json.h>
我正在制作一个程序,基本上是对几台不同机器的压力测试,我必须将测试结果写入 json 格式。
因为我不想在每台机器上手动安装 jsoncpp,所以我决定在 CMakeLists 文件中使用 Fetchcontent:
cmake_minimum_required(VERSION 3.15)
project(Programma)
include(FetchContent)
FetchContent_Declare(
jsoncpp
GIT_REPOSITORY https://github.com/open-source-parsers/jsoncpp.git
GIT_TAG master
)
FetchContent_GetProperties(jsoncpp)
if (NOT jsoncpp_POPULATED)
FetchContent_Populate(jsoncpp)
add_subdirectory(${jsoncpp_SOURCE_DIR} ${jsoncpp_BINARY_DIR})
message(${jsoncpp_SOURCE_DIR})
message(${jsoncpp_BINARY_DIR})
endif ()
#FetchContent_MakeAvailable(jsoncpp)
set(CMAKE_CXX_STANDARD 17)
add_executable(Programma main.cpp)
add_library(TestSubjects.cpp TransformTests.cpp FoldTests.cpp
TestResults.h SortTests.cpp FindTests.cpp)
target_link_libraries(Programma Tests jsoncpp)
但我尝试了几个 header 包括 <json.h>
<jsoncpp/json.h>
json/json.h>
但其中 none 有效。我做错了什么?
在构建过程中,项目 jsoncpp
未提供 jsoncpp
目标 。相反,它为不同类型的库提供单独的目标:
jsoncpp_static
对于 STATIC 库,jsoncpp_lib
共享库,jsoncpp_object
对象库。
默认情况下,所有 3 种库类型都已构建,因此您可以为 link 选择其中的 任何,其中:
target_link_libraries(Programma jsoncpp_lib)
此外,正确的包含指令是
#include <json/json.h>