gpt4 book ai didi

c++ - 需要建议 : does it make sense to include fmt lib in header-only library?

转载 作者:行者123 更新时间:2023-12-05 01:58:31 29 4
gpt4 key购买 nike

我目前正在结束用于基于网格的量子计算的仅 C++ header 模板库的开发,并且我正在考虑替换我几乎在开始时编写的旧日志记录模块。

我知道将仅 header 的库打印到标准输出(和文件)听起来有点奇怪,但我大量使用模板来提高运行时二进制文件的灵 active 和效率,因此我选择了这个。

当前的日志记录模块使用 printf(因为我不喜欢 std::cout 语法)、宏、可变参数宏(##__VA_ARGS__),支持控制台颜色和打印​​输出使用 __FILE____LINE__ 宏在源代码中的位置,即既不是现代的也不是类型安全的,但它可以工作。

fmt(或类似的东西)替换它是否有意义,或者我应该尝试使现有的现代化(即用模板替换可变参数宏,自定义编译时 string_view 等)?

我希望图书馆“直接”工作,也就是说,我希望:

a) 尽可能消除依赖

b) 尝试在 CMake 中静静地使用 find_package(fmt) 或 FetchContent -(顺便说一下,是否有针对此行为的通用 CMake"template"?类似于“find_or_fetch”?)

c) 将 fmt 的基本部分作为 git 子模块放入我的项目中,并包含一个小头文件。

除此之外,我还计划使用 HDF5 库(有或没有 C++ 包装器)。在这里,我再次不确定如何最好地处理它以使集成尽可能无缝,我也没有决定应该使用哪个包装器。“find_or_fetch”范式是否适合仅包含 header 的库?

最佳答案

如果您进行大量格式化和 {fmt} 是有意义的旨在支持轻松嵌入。特别是,它具有零依赖性并且相对较小,最小配置仅包含三个中等大小的文件。有几个项目嵌入了 {fmt},例如 spdlog .与推出您自己的格式化解决方案相比,其优势在于将来可以轻松移植到 std::format

关于c++ - 需要建议 : does it make sense to include fmt lib in header-only library?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68534952/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com