如何使用 spdlog

Posted

技术标签:

【中文标题】如何使用 spdlog【英文标题】:How to use spdlog 【发布时间】:2020-08-21 12:22:49 【问题描述】:

我是 C++ 新手,请不要烤太多。我正在尝试在 C++ 程序中使用 spdlog 并使用 Jetbrains 的 CLion。

这是我的截图,但不知道我做错了什么。请告知我做错了什么。

这是我的 main.cpp

#include <iostream>
#include "include/spdlog/spdlog.h"


int main() 
    std::cout << "Hello, World!" << std::endl;
    spdlog::info("hello world");
    return 0;

这是我的 CMakeList.txt

cmake_minimum_required(VERSION 3.17) project(Lesson01)

set(CMAKE_CXX_STANDARD 14)

add_executable(Lesson01 main.cpp) include_directories(spdlog)

谢谢

【问题讨论】:

请将代码发布为文本而不是图像 错误很明显。您没有正确设置包含路径。对于 CLion,您可以在 CMakeLists.txt 中执行此操作,可能使用标准 find_package() ...您为任何第三方库执行的操作。 这里有一个speedlog的示例脚本:https://github.com/twanas/spdlog-cmake/blob/master/CMakeLists.txt你的CMakeLists.txt错过了find_package(spdlog)target_link_libraries(lesson1 spdlog) @drescherjm,我尝试了你的方法,这就是我的 CMakeLists.txt 看起来像 cmake_minimum_required(VERSION 3.17) 项目(Lesson01) set(CMAKE_CXX_STANDARD 14) find_package(spdlog) add_executable(Lesson01 main.cpp) target_link_libraries (第 1 课 spdlog) @drescherjm,现在在 CMakeLists.txt:7 (find_package) 处收到此错误 CMake 警告:通过在 CMAKE_MODULE_PATH 中未提供“Findspdlog.cmake”,此项目已要求 CMake 查找由“spdlog”,但 CMake 没有找到。找不到由“spdlog”提供的具有以下任何名称的包配置文件: spdlogConfig.cmake spdlog-config.cmake 【参考方案1】:

在您创建的原型中,您两次提到了关键字 include 第一个在 # 之后,第二个在引号​​之间。

我一直在寻找互联网和 spdlog 原型的基本写作。链接在这里:https://github.com/gabime/spdlog

#include "spdlog/spdlog.h"

测试中没有第二个包含在您的代码中。

一切顺利

马修

【讨论】:

亲爱的 Mathieu,我尝试了您的建议,但收到此错误“spdlog/spdlog.h”文件未找到。【参考方案2】:

在您的代码中,您有#include "include/spdlog/spdlog.h",并且通过您链接的屏幕截图,可以找到此包含。但是,然后它抱怨spdlog.h 尝试#include &lt;spdlog/common.h&gt;,并且找不到该文件。

这听起来像是您没有为库设置正确的包含目录,而只是通过过度指定路径来正确获取第一个文件。

我会尝试将include_directories(spdlog) 更改为include_directories(include)(或者可能是include_directories(include/spdlog),不完全确定哪个文件夹是包含库的基础文件夹)。如果你愿意,你也可以添加所有这些;我不认为在这里添加太多会破坏任何东西,但它可能会影响编译速度,所以尽量只保留正确的。

此外,在进行此更改后,您可能需要将原始包含从 #include "include/spdlog/spdlog.h" 更改为 #include "spdlog/spdlog.h"

【讨论】:

不能让它发挥作用。我已经更新了代码和截图

以上是关于如何使用 spdlog的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 spdlog 记录 pid(进程 ID)

如何转义 spdlog 消息?

如何在代码中启用/禁用 spdlog 日志记录?

如何将 Windows 调试记录器附加到 spdlog

spdlog 错误:“不知道如何格式化类型,包括 fmt/ostream.h 如果它提供了应该使用的 operator<<”

从动态加载的库中记录