Files

4.5 KiB
Raw Permalink Blame History

第三方库来源说明(spdlog)

本目录按上游原样内置 spdlog 源码(include/ 头文件 + src/ 编译单元,保留上游字节,含换行符,不做编码/格式转换),与 third_party/ormpp、third_party/toml 同类处理:仓库自带依赖,离线可配置、可交付。

内容 本目录位置 上游 版本 / 标识
spdlog(C++ 日志库) include/spdlog/**(105 个文件 / 940,660 字节)、src/*.cpp(7 个文件 / 9,168 字节) https://github.com/gabime/spdlog tag v1.17.0(commit 79524ddd08a4ec981b7fea76afd08ee05f83755d,2026-01-04);include/spdlog/version.h = 1.17.0
内置 {fmt}(随 spdlog 内置,供格式化使用) include/spdlog/fmt/bundled/**(23 个文件) 随 spdlog 内置;独立仓库 https://github.com/fmtlib/fmt {fmt} 12.1.0(spdlog v1.17.0 的 bundled 版本;未启用 SPDLOG_FMT_EXTERNAL)
许可证 LICENSE — MIT License(上游原文,1,323 字节)

关键文件校验(与上游 v1.17.0 tarball 一致,可用下方复现步骤复核):

文件 字节数 SHA-256
include/spdlog/version.h 417 a0c15d9295eba580732dada20940a443c53ddb47d8565c730d7af1ee5f3bd712
include/spdlog/spdlog.h 11,866 54283b3e3bf96c3d…(前 16 位)
include/spdlog/common.h 12,569 ddf4fa8ee4687f36…(前 16 位)
include/spdlog/fmt/bundled/format-inl.h 81,008 e7baf108b84e89b29915bb35733540f8f4262cd8f4b41c15754eed4d2f185f61
LICENSE 1,323 d678c20826e13925…(前 16 位)

说明:只保留使用所需的 include/ 与 src/(上游 tests/、bench/、example/、cmake/、scripts/、logos/、.github/ 等均不需要);include/ + src/ + LICENSE 共 113 个文件 / 951,151 字节(上游 v1.17.0 源码 tarball spdlog-1.17.0.tar.gz = 281,801 字节)。

复现步骤(重新获取/升级时执行)

:: 在临时目录执行(本机全局 core.autocrlf=true 会把文本转成 CRLF,必须显式关闭)
git -c core.autocrlf=false clone --depth 1 --branch v1.17.0 https://github.com/gabime/spdlog.git <tmp-spdlog>

:: 仅拷贝以下内容到本目录(其余目录不需要):
::   <tmp-spdlog>\include\                                     -> third_party\spdlog\include\
::   <tmp-spdlog>\src\                                         -> third_party\spdlog\src\
::   <tmp-spdlog>\LICENSE                                      -> third_party\spdlog\LICENSE

或直接使用官方 tag 源码包(推荐,字节与上述 tarball 一致):

:: https://codeload.github.com/gabime/spdlog/tar.gz/refs/tags/v1.17.0
:: 解压后同样只拷贝 include\、src\、LICENSE

校验方式:include/ 105 个文件 / 940,660 字节、src/ 7 个文件 / 9,168 字节,且 include/spdlog/version.h 的 SHA-256 为 a0c15d92…f3bd712;本目录所有文件保持 LF 换行(上游字节,不转 CRLF/BOM)。

使用方式与约束

  • 仅由日志模块 data_process_class_dll/rdp_log.h(经 rdp_log.cpp、各业务模块的 RDP_LOG_* 宏)使用。
  • 以静态库方式编译:根目录 CMakeLists.txt 定义目标 spdlog(third_party/spdlog/src/*.cpp,SPDLOG_COMPILED_LIB),链接进 data_process_class_dll;rdp_record 静态库(C++20,rdp_record.cpp 内也有日志)同样链接该目标。头文件包含路径与 SPDLOG_COMPILED_LIB / SPDLOG_ACTIVE_LEVEL 编译定义由该目标的 PUBLIC 接口传递给使用方。
  • 编译期日志级别:spdlog 的 SPDLOG_ACTIVE_LEVEL 由 CMake 选项 RDP_LOG_LEVEL(AUTO/TRACE/DEBUG/INFO/WARN/ERROR/CRITICAL/OFF)映射,AUTO 时 Debug = TRACE、其余 = INFO;低于该级别的 RDP_LOG_* 调用在编译期被剔除(实参不求值)。配置方式见 README.md 4.3、10.4。
  • 告警处理:第三方源码以目标级 /w 编译,本项目源码包含其头文件处用 #pragma warning(push, 0) / (pop) 包裹(rdp_log.h),维持 README 4.5 的 /W3 零告警约定;这是本目录作为第三方依赖的唯一例外。
  • 升级方式:整目录替换为新的上游快照,同步更新本文件的版本 / commit / 校验值,然后必须重新验证:4 个配置(Release/Debug × REC_OFF/REC_ON)构建通过(0 warning)+ 日志双写(标准输出 + rdp_logs 文件)、按日期+时间命名/同秒 _1 后缀、RDP_LOG_LEVEL 编译期过滤等运行期行为(见 README 10.4)。