You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CMake FetchContent无法下载jsoncpp依赖问题求助

CMake FetchContent未下载jsoncpp的解决方案

问题根源

CMake的FetchContent_MakeAvailable采用按需执行逻辑:只有当项目中的目标实际引用了被声明的依赖目标时,才会触发依赖的下载、配置与构建流程。你当前的配置仅完成了依赖声明,但未在可执行目标中关联jsoncpp,因此CMake不会启动下载。

修复方案

方案1:关联jsoncpp到可执行目标(推荐)

修改Test目录下的CMakeLists.txt,添加链接jsoncpp库的指令:

# Add source to this project's executable.
add_executable (CMakeTarget "Test.cpp")

if (CMAKE_VERSION VERSION_GREATER 3.12)
  set_property(TARGET CMakeTarget PROPERTY CXX_STANDARD 20)
endif()

# 链接jsoncpp的库目标
target_link_libraries(CMakeTarget PRIVATE jsoncpp_lib)

# TODO: Add tests and install targets if needed.

方案2:强制提前下载(无需链接时使用)

若希望不依赖目标关联,直接提前下载jsoncpp,可修改根目录CMakeLists.txt,用FetchContent_Populate替代FetchContent_MakeAvailable:

FetchContent_Declare(
    jsoncpp
    GIT_REPOSITORY https://github.com/open-source-parsers/jsoncpp.git
    GIT_TAG        8190e06  #1.9.5
)

# 强制触发下载与配置
FetchContent_Populate(jsoncpp)
# 若需要构建jsoncpp库,添加以下指令
add_subdirectory(${jsoncpp_SOURCE_DIR} ${jsoncpp_BINARY_DIR})

验证步骤

  1. 删除原构建目录(清除CMake缓存)
  2. 重新执行CMake配置命令(如cmake -S . -B build)
  3. 检查构建目录下的_deps文件夹,若出现jsoncpp-src、jsoncpp-build等子目录,说明下载成功

内容的提问来源于stack exchange,提问作者Dark Sorrow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 20:37:16