我想将spdlog包含在我的某个项目中。它只是一个标题库。我正在构建的项目正在使用cmake。目前我正在使用
include_directories('src/logger/spdlog/')
在cmake中并将库包含为
#include <spdlog/spdlog.h>
在logs.h里面的logger文件夹中。我正在致命错误没有这样的文件或目录。在我的应用程序中包含相同库的正确方法是什么。
答案 0 :(得分:4)
您可能不在一个目录中。尝试
include_directories("src/logger")
<{1>}或中的
CMakeLists.txt
在源代码中。
答案 1 :(得分:3)
Cmake 提供了专门用于“仅头文件库”的接口库。我建议执行以下操作:
third-party\spdlog\include
include
的 spdlog
目录third-party\spdlog\CMakeLists.txt
find_package(Threads REQUIRED)
add_library(${TARGET_LOGGER} INTERFACE)
# add_library(spdlog::spdlog_header_only ALIAS ${TARGET_LOGGER})
target_include_directories(${TARGET_LOGGER} INTERFACE "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>"
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>")
target_link_libraries(${TARGET_LOGGER} INTERFACE Threads::Threads)
target_link_libraries(${TARGET_PROJECT} LINK_PUBLIC ${TARGET_LOGGER})
将此目标链接到您的项目。还有别忘了add_subdirectory(
third-party\spdlog
)
然后,在您的项目中,您可以使用 #include "spdlog/spdlog.h"
来包含库
答案 2 :(得分:1)
首先,不要使用单引号'
,而应使用双引号"
或仅使用纯字符串(如果它们不包含空格)。
我建议你使用find_path
而不是直接添加包含。在那里你可以添加PATH_SUFFIXES
。如果找不到标题,您会在配置期间收到消息,这样可以更容易地发现错误
文档:https://cmake.org/cmake/help/v3.6/command/find_path.html