spdlog静态库方式

spdlog新版本提供了静态库方式,这样比原来的header only方式显著提升了编译速度。

这里分析一下怎么使用: 根目录下的CMakeLists.txt中主要有如下内容:

...
include(cmake/ide.cmake) // 其中包含SPDLOG_ALL_HEADERS等变量
...
add_library(spdlog STATIC src/spdlog.cpp ${SPDLOG_ALL_HEADERS}) // 添加静态库编译对象
add_library(spdlog::spdlog ALIAS spdlog) // 别名
...
target_compile_definitions(spdlog PUBLIC SPDLOG_COMPILED_LIB) // 在对象中添加宏定义
...
find_package(Threads REQUIRED) 
...
target_link_libraries(spdlog_header_only INTERFACE Threads::Threads)

add_subdirectory(example) // 添加了子目录example

example目录下的CMakeLists.txt主要内容:

add_executable(example example.cpp)
target_link_libraries(example PRIVATE spdlog::spdlog) // 依赖了spdlog::spdlog,即spdlog,即静态库

example有两种编译方式:

  1. 一种是通过根目录的CMakeLists.txt引用example下的CMakeLists.txt可以编译
  2. 另一种是通过命令编译:g++ example.cpp ../src/spdlog.cpp -I../include -L.. -DSPDLOG_COMPILED_LIB -pthread

转载于:https://my.oschina.net/chuqq/blog/3064013

spdlog是一个快速、异步的C++日志库,支持多线程和跨平台,具有简单易用的接口和高性能的日志记录能力。以下是spdlog的一些主要特点: 1. 快速:spdlog使用高效的缓冲区实现快速的日志记录,可以轻松处理高负载的日志记录场景。 2. 异步:spdlog支持异步日志记录,可以将日志写入缓冲区后立即返回,不会阻塞主线程。 3. 多线程:spdlog可以安全地在多个线程中使用,支持多个线程同时进行日志记录,且不需要额外的同步机制。 4. 跨平台:spdlog可以在多个平台上运行,包括Windows、Linux、OS X等。 5. 简单易用:spdlog提供简洁明了的API,可以轻松地实现日志记录功能。 以下是spdlog的使用示例: ```cpp #include "spdlog/spdlog.h" void log_example() { // 创建一个控制台日志记录器 auto console = spdlog::stdout_color_mt("console"); // 创建一个文件日志记录器 auto file = spdlog::basic_logger_mt("file_logger", "logs/mylogfile.txt"); // 设置日志记录级别 console->set_level(spdlog::level::info); file->set_level(spdlog::level::trace); // 记录日志 console->info("Hello, spdlog!"); file->trace("This is a trace message."); } ``` 以上代码演示了如何创建一个控制台日志记录器和一个文件日志记录器,并设置不同的日志记录级别,最后分别记录了一条信息和一条跟踪信息。 更多关于spdlog的使用说明,请参考spdlog的官方文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值