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

CMake链接NLohmann JSON库失败(M1 Mac)如何解决?

解决M1 Mac上NLohmann JSON头文件找不到的问题

问题根源

M1 Mac的ARM64架构包管理路径与x86_64存在差异,且NLohmann JSON的CMake配置在新版本中更推荐目标式链接而非传统变量引用,你当前使用的${nlohmann_json_INCLUDE_DIR}和${nlohmann_json_LIBRARIES}在ARM架构环境下未正确识别路径。

修正步骤

1. 确保NLohmann JSON为ARM版本

M1 Mac需使用对应架构的Homebrew包,先卸载可能存在的x86版本,再安装ARM版:

arch -x86_64 brew uninstall nlohmann-json
brew install nlohmann-json

2. 重构CMakeLists.txt链接逻辑

NLohmann JSON 3.10.0+提供了官方CMake目标nlohmann_json::nlohmann_json,无需手动指定include目录和库路径,直接链接目标即可:

cmake_minimum_required(VERSION 3.14)

project(interpreter)

find_package(nlohmann_json 3.2.0 REQUIRED)

add_library(interpreter
    src/interpretJson.cpp
)

target_include_directories(interpreter
    PUBLIC
        $<INSTALL_INTERFACE:include>
        $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
    PRIVATE
        ${CMAKE_CURRENT_SOURCE_DIR}/src
)

# 替换变量引用,直接链接官方目标
target_link_libraries(interpreter
    PRIVATE 
        nlohmann_json::nlohmann_json
)

set_target_properties(interpreter
                    PROPERTIES
                    LINKER_LANGUAGE CXX
                    CXX_STANDARD 17
                    CXX_STANDARD_REQUIRED ON
)

install(TARGETS interpreter
    ARCHIVE DESTINATION lib
)

3. 清理缓存重新构建

M1 Mac的CMake缓存可能残留x86架构路径信息,执行以下命令重置构建环境:

rm -rf build
mkdir build && cd build
cmake ..
make

4. 备选方案:使用单头文件版本

若包管理方式仍有问题,可直接下载NLohmann JSON的单头文件json.hpp,放到项目include/nlohmann目录下,无需依赖CMake包查找,直接通过项目自身include目录即可访问头文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 08:56:07