CMake编译报错:无法找到所用nlohmann库中的依赖头文件
解决编译错误:找不到nlohmann头文件
问题原因
编译报错是因为编译器搜索头文件时,找不到nlohmann/adl_serializer.hpp的路径。虽然这些依赖头文件和json.hpp在同一目录,但json.hpp里用了<nlohmann/adl_serializer.hpp>这种尖括号引用方式,编译器会从系统默认路径和你指定的包含路径里查找nlohmann子目录,而当前CMake配置未将src/lib加入到包含路径中。
修复步骤
修改你的CMakeLists.txt,做两处调整:
- 添加
include_directories(src/lib),告知编译器去src/lib目录下搜索头文件 - 移除
SOURCE_FILES里的src/lib/nlohmann/json.hpp,头文件无需作为源文件添加到编译目标中
修改后的CMakeLists.txt内容:
cmake_minimum_required(VERSION 3.13) project(bittorrent-starter-cpp) set(CMAKE_CXX_STANDARD 20) # 添加头文件搜索路径 include_directories(src/lib) set(SOURCE_FILES src/Main.cpp) add_executable(bittorrent ${SOURCE_FILES})
原理说明
添加include_directories(src/lib)后,编译器会把src/lib作为头文件搜索目录,当json.hpp引用<nlohmann/adl_serializer.hpp>时,编译器就能在src/lib/nlohmann目录下找到对应头文件,从而解决找不到文件的问题。
内容的提问来源于stack exchange,提问作者VargMen
相关产品推荐
相关产品推荐

