【发布时间】:2021-07-13 19:53:50
【问题描述】:
我正在寻求您的所有帮助和/或就我在试图理解柯南时遇到的一个奇怪问题提供建议。
首先,错误:
知名人士:/bin/ld: cannot find -lnlohmann_json_schema_validator
我正在尝试做的事情: 尝试构建 json-schema-validator 的主要示例,基于 nlohmann_json,使用 cmake 和 conan 包管理器。
链接:
CMakeLists.txt 非常简单:
cmake_minimum_required(VERSION 3.10)
project(app VERSION 1.0.0 LANGUAGES CXX)
add_executable(${PROJECT_NAME} src/main.cpp)
target_compile_features(${PROJECT_NAME} PRIVATE cxx_std_17)
if(NOT EXISTS "${CMAKE_BINARY_DIR}/conan.cmake")
message(STATUS "Downloading conan.cmake from https://github.com/conan-io/cmake-conan")
file(DOWNLOAD "https://raw.githubusercontent.com/conan-io/cmake-conan/master/conan.cmake"
"${CMAKE_BINARY_DIR}/conan.cmake")
endif()
include(${CMAKE_BINARY_DIR}/conan.cmake)
# Point 1
conan_cmake_run(REQUIRES json-schema-validator/2.1.0 BASIC_SETUP BUILD missing)
target_link_libraries(${PROJECT_NAME} ${CONAN_LIBS})
# Point 2
target_include_directories(${PROJECT_NAME} PUBLIC "src")
从这一刻开始,我搜索并发现了不同的信息:
-
https://stackoverflow.com/a/34256630/7135482:确定 /bin/ld 在链接时找不到库,但由于我对所有内容(柯南配置文件、Cmake 等)使用默认配置并希望库在编译期间保持静态,我想知道为什么 / bin/ld 找不到位于
/home/<user>/.conan/data/json-schema-validator/2.1.0/_/_/package/feb79143ef49afa1ac08f157e4ea835476439057/lib的库...从我的角度来看,在柯南方面似乎非常准确...为什么在构建 Makefile 时它不能为 CMake 提供正确的路径? - 我更改了 CMakeLists.txt(在“Point 1”和“Point 2”之间),认为这是使用“不推荐”
conan_cmake_run(...)。于是我按照documentation on Github改了
conan_cmake_configure(REQUIRES json-schema-validator/2.1.0
GENERATORS cmake)
conan_cmake_autodetect(settings)
conan_cmake_install(PATH_OR_REFERENCE .
BUILD missing
REMOTE conan-center
SETTINGS ${settings})
(这里我收到错误fatal error: nlohmann/json-schema.hpp: No such file or directory。所以,似乎这种做事方式甚至没有#include 文件)
- 我获得库及其示例的唯一方法是完全绕过柯南...,将 nlohmann_json 存储库和 json-schema-validation 存储库克隆到供应商文件夹中,并将它们添加到 CMake 系统,如下所示:
#add_subdirectory(vendor/json)
#add_subdirectory(vendor/json-schema-validator)
#target_link_libraries(${PROJECT_NAME} nlohmann_json::nlohmann_json nlohmann_json_schema_validator)
但是,如果让我的项目构建的唯一方法是避免使用包管理器,那么尝试使用包管理器让我的生活更轻松又有什么意义呢?
是否有人已经遇到过此类问题?或者有其他想法我可以尝试或改变?
任何帮助将不胜感激!所以,提前谢谢!
【问题讨论】:
标签: c++ cmake build conan nlohmann-json