我想在我的一个项目中包含spdlog。它是一个仅包含头文件的库。我正在构建的项目正在使用cmake。目前我正在使用
include_directories('src/logger/spdlog/')在cmake中,并将该库包含为
#include <spdlog/spdlog.h>在记录器文件夹内的logs.h中。我得到致命的错误,没有这样的文件或目录。在我的应用程序中包含相同的库的正确方法是什么?
发布于 2016-07-03 16:39:05
首先,不要使用单引号',而要使用双引号",如果不包含空格,则只使用普通字符串。
我建议您使用find_path而不是直接添加includes。您可以在其中添加PATH_SUFFIXES。在配置过程中,如果没有找到头,您会收到一条消息,这样可以更容易地发现错误。
发布于 2016-07-02 19:12:17
您可能离开了一个目录。试一试
include_directories("src/logger")在CMakeLists.txt中,或者
#include <spdlog.h>在源代码中。
发布于 2021-01-04 07:35:47
Cmake提供了专门针对header-only库的接口库。我建议做以下几件事:
类似的文件结构
third-party\spdlog\includespdlogthird-party\spdlog\CMakeLists.txt的include目录中,并包含以下contentfind_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"来包含库
https://stackoverflow.com/questions/38159466
复制相似问题