问题描述
我正在尝试构建一个使用nlohmann :: json的程序,但是includes出现了问题。按照我使用的find_package(nlohmann_json 3.9.0 required)
的说明,CMake会找到该软件包,但是在构建时,我收到一条错误消息:Fatal error: nlohmann\json.hpp: No such file or directory
这是CMake的输出:
Found nlohmann_json: /usr/local/lib64/cmake/nlohmann_json/nlohmann_jsonConfig.cmake (found suitable version "3.9.1",minimum required is "3.9.0")
-- Configuring done
-- Generating done
-- Build files have been written to: /root/vts/build
这是我的完整CMake文件
cmake_minimum_required(VERSION 3.10)
set(CMAKE_disABLE_SOURCE_CHANGES ON)
set(CMAKE_disABLE_IN_SOURCE_BUILD ON)
project(vitanza-service CXX)
add_subdirectory(VitanzaService)
add_executable(vts ${vts_SRC})
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
set_target_properties(vts PROPERTIES CXX_STANDARD 14)
set_target_properties(vts PROPERTIES CXX_STANDARD_required ON)
LINK_DIRECTORIES(/usr/local/lib)
if (NOT WIN32)
add_compile_options(-Wall -Werror -pipe -fvisibility=hidden)
endif ()
set(CMAKE_CXX_FLAGS_PERFORMANCE "${CMAKE_CXX_FLAGS_RELEASE} -march=native")
if (CMAKE_COMPILER_IS_GNUCXX)
add_compile_options(-fno-strict-aliasing)
endif ()
find_package(AWSSDK required COMPONENTS dynamodb)
find_package(MysqL required)
find_package(Boost 1.53.0 required COMPONENTS system)
find_package(nlohmann_json 3.9.0 required)
include_directories(${Boost_INCLUDE_Dirs} ${MysqL_INCLUDE_DIR})
target_link_libraries(vts PRIVATE
Boost::system
${AWSSDK_LINK_LIBRARIES}
${MysqL_CLIENT_LIBS}
nlohmann_json::nlohmann_json
served libserved.so
)
我不确定是什么问题。我是否应该在include_directories
中添加另一个变量?我什至尝试将路径添加到include目录,但这也不起作用。
我还尝试使用add_path并将该路径添加到include_directories:
find_path(JSON_INCLUDE_DIR nlohmann/json.hpp
/usr/local/include)
...
include_directories(${JSON_INCLUDE_DIR})
最后,我尝试按照概述here使用FetchContent,但似乎没有任何效果。
我在使用GCC 8和最新版本的nlohmann :: json的CentOS 8上(我从源代码(包括make install
构建)。刚刚在Debian 10中尝试过,我遇到了同样的问题。
谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)