如何仅引入nlohmann_json的json.hpp文件并配置CMakeLists.txt
使用单文件版nlohmann_json集成到CMake项目
第一步:获取独立的json.hpp文件
官方提供了完全独立的单文件版本,无需依赖仓库其他文件。直接从官方仓库的single_include目录下获取nlohmann/json.hpp,将其放到你的项目目录中,比如third-party/nlohmann/路径下。
第二步:修改CMakeLists.txt配置
无需再使用find_package,直接通过以下方式配置:
- 添加头文件包含路径,让编译器能找到
json.hpp:
# 假设json.hpp存放路径为third-party/nlohmann/ target_include_directories(PROJECT_NAME PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/third-party)
- (可选)如果需要禁用特定特性(如异常),可添加编译定义:
target_compile_definitions(PROJECT_NAME PRIVATE NLOHMANN_JSON_NO_EXCEPTIONS)
- 移除原有配置中与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
相关产品推荐
相关产品推荐

