我使用那里安装了 spdlog 静态库 doc 并尝试使用那里example将其链接到我的程序 安装路径是这样的:
/home/yaodav/Desktop/dnr_main_repo/lib/external
这是我的 CMAKE:
cmake_minimum_required(VERSION 3.19)
project(test_1)
set(CMAKE_CXX_STANDARD 17)
set(Boost_USE_STATIC_LIBS ON)
set(Boost_USE_MULTITHREADED ON)
find_package(Boost 1.75.0 COMPONENTS date_time system thread CONFIG)
if(Boost_FOUND)
message("Boost found ${Boost_VERSION}")
message("${Boost_LIBRARIES}")
endif()
find_library(CONNECTION
NAMES connlib
)
if(NOT CONNECTION)
message(FATAL_ERROR "CONNECTION library not found")
else()
message("CONNECTION library found")
endif()
if(NOT TARGET spdlog)
# Stand-alone build
find_package(spdlog REQUIRED)
endif()
find_package(Threads)
add_executable(test_1 main.cpp)
target_link_libraries(test_1 PRIVATE ${CONNECTION} ${Boost_LIBRARIES} Threads::Threads pq spdlog::spdlog)
但我收到此错误:
CMakeLists.txt:23 (find_package) 处的 CMake 错误:通过不提供 CMAKE_MODULE_PATH 中的“Findspdlog.cmake”此项目已询问 CMake 找到“spdlog”提供的包配置文件,但是CMake 没找到。
找不到“spdlog”提供的包配置文件 具有以下任何名称:
spdlogConfig.cmake spdlog-config.cmake
将“spdlog”的安装前缀添加到CMAKE_PREFIX_PATH或设置 “spdlog_DIR”到包含上述文件之一的目录。如果 “spdlog”提供了单独的开发包或SDK,请务必使用 已安装。
所以我添加了
spdlog_DIR
set(spdlog_DIR ../lib/external/spdlog
find_package(spdlog PATHS ${spdlog_DIR } REQUIRED)
出现此错误:
include could not find load file:
/home/yaodav/Desktop/dnr_main_repo/lib/external/spdlog/build/spdlogConfigTargets.cmake
我发现使用 FetchContent 和 spdlog 也是最简单的。刚刚将这些行添加到我的项目中:
...
Include(FetchContent)
FetchContent_Declare(
spdlog
GIT_REPOSITORY https://github.com/gabime/spdlog.git
GIT_TAG v1.9.2
)
FetchContent_MakeAvailable(spdlog)
add_executable(project main.cpp)
target_link_libraries(project PRIVATE spdlog::spdlog)
...
只需 git clone 并编译,然后运行 make install,所有必需的库和标头将分别安装在。