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

如何仅引入nlohmann_json的json.hpp文件并配置CMakeLists.txt

使用单文件版nlohmann_json集成到CMake项目

第一步:获取独立的json.hpp文件

官方提供了完全独立的单文件版本,无需依赖仓库其他文件。直接从官方仓库的single_include目录下获取nlohmann/json.hpp,将其放到你的项目目录中,比如third-party/nlohmann/路径下。

第二步:修改CMakeLists.txt配置

无需再使用find_package,直接通过以下方式配置:

  1. 添加头文件包含路径,让编译器能找到json.hpp:
# 假设json.hpp存放路径为third-party/nlohmann/
target_include_directories(PROJECT_NAME PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/third-party)
  1. (可选)如果需要禁用特定特性(如异常),可添加编译定义:
target_compile_definitions(PROJECT_NAME PRIVATE NLOHMANN_JSON_NO_EXCEPTIONS)
  1. 移除原有配置中与nlohmann_json相关的find_package和链接项,最终配置示例:
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)

# 添加单文件json的包含目录
target_include_directories(PROJECT_NAME PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/third-party)

# 可选:添加自定义编译定义
# target_compile_definitions(PROJECT_NAME PRIVATE NLOHMANN_JSON_NO_EXCEPTIONS)

# Some Other Configurations

target_link_libraries(PROJECT_NAME PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)

说明

你之前直接从仓库源码中拿的json.hpp是分模块的源码版,它依赖仓库内的其他子头文件(如src/detail/下的文件);而single_include目录下的版本是官方预先合并所有依赖内容的独立文件,因此无需额外依赖。

内容的提问来源于stack exchange,提问作者Fares Hesham Abdelmoneim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 20:12:06