如何从fetchcontent中使用jsoncpp



我正在制作一个程序,该程序基本上是针对几台不同机器的压力测试,我必须将测试结果写入jsonformat。

因为我不想在每台机器上手动安装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)

但我尝试了几个头包含,如<json.h><jsoncpp/json.h>json/json.h>,但都不起作用。我做错了什么?

在构建时,项目jsoncpp不提供jsoncpp目标。相反,它为不同类型的库提供了单独的目标:

  • STATIC库的CCD_ 6
  • 用于SHARED库的CCD_ 7
  • OBJECT库的jsoncpp_object

默认情况下,所有3种库类型都已构建,因此您可以选择其中任何与链接

target_link_libraries(Programma jsoncpp_lib)

此外,正确的include指令是

#include <json/json.h>

最新更新