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

使用find_package设置nlohmann::json的CMake选项无效,求解决方案

关于nlohmann::json禁用隐式转换的find_package用法问题
  • 你遇到的问题本质是:JSON_ImplicitConversions是nlohmann_json构建阶段的配置选项,而非使用阶段的选项。
  • 用fetch_content时,你是从源码重新构建库,设置的JSON_ImplicitConversions OFF会被传递到库的构建流程中,因此能生效。
  • 而find_package是查找已预编译完成的nlohmann_json包(无论是系统默认安装的,还是你之前自行编译安装的),这个包在编译时就已经确定了是否开启隐式转换,后续通过set设置的选项无法改变已编译库的配置。

可行解决办法

如果坚持使用find_package,有两种方案:

  1. 自行从源码编译nlohmann_json,编译时通过-DJSON_ImplicitConversions=OFF指定选项,编译完成后安装到系统或本地路径,再用find_package查找这个自定义编译的版本。
  2. 使用nlohmann_json的header-only模式(库的默认推荐方式),此时无需依赖编译选项,只需在包含头文件前定义宏JSON_USE_IMPLICIT_CONVERSIONS=0即可禁用隐式转换:
    #define JSON_USE_IMPLICIT_CONVERSIONS 0
    #include <nlohmann/json.hpp>
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 18:32:33