我目前正在结束为基于网格的量子计算开发仅包含 C++ 标头的模板库,并且我正在考虑替换我几乎在一开始就编写的旧日志记录模块。
我知道让一个仅标头的库将内容打印到标准输出(和文件)听起来有点奇怪,但我大量使用模板来提高运行时二进制文件的灵活性和效率,因此选择了这个。
当前的日志记录模块使用 printf(因为我不喜欢语法 )、std::cout
宏、可变参数宏(##__VA_ARGS__
__FILE__
__LINE__
用(或类似的东西)替换它是否有意义,fmt
或者我应该尝试对现有的进行现代化改造(即用模板替换可变参数宏,自定义构建的 compile-timestring_view
等)?
我希望图书馆“立即”工作,也就是说,我想:
a) 尽可能多地消除依赖
b)find_package(fmt)
在 CMake 中静默尝试或 FetchContent - (顺便说一句。这种行为是否有通用的 CMake“模板”?类似于“find_or_fetch”?)
c) 将基本部分fmt
作为 git 子模块放在我的项目中,并包含一个小头文件。
除此之外,我还计划使用 HDF5 库(有或没有 C++ 包装器)。再次在这里,我不确定如何最好地处理它以使集成尽可能无缝,我也没有决定应该使用哪个包装器。“find_or_fetch”范式是否适合仅标头库?