如何使用 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 <spdlog/common.h>
,并且找不到该文件。
这听起来像是您没有为库设置正确的包含目录,而只是通过过度指定路径来正确获取第一个文件。
我会尝试将include_directories(spdlog)
更改为include_directories(include)
(或者可能是include_directories(include/spdlog)
,不完全确定哪个文件夹是包含库的基础文件夹)。如果你愿意,你也可以添加所有这些;我不认为在这里添加太多会破坏任何东西,但它可能会影响编译速度,所以尽量只保留正确的。
此外,在进行此更改后,您可能需要将原始包含从 #include "include/spdlog/spdlog.h"
更改为 #include "spdlog/spdlog.h"
。
【讨论】:
不能让它发挥作用。我已经更新了代码和截图以上是关于如何使用 spdlog的主要内容,如果未能解决你的问题,请参考以下文章
spdlog 错误:“不知道如何格式化类型,包括 fmt/ostream.h 如果它提供了应该使用的 operator<<”