当前位置: 首页 > news >正文

引入spdlog后程序链接很慢

最近在开发嵌入式应用程序,其中的日志模块经技术选型,采用了大名鼎鼎的spdlog。本来想着这个第三方库网上资料很多,集成到程序中,应该比较容易。

生成应用程序很慢

程序加了很多功能模块之后,突然发现生成应用程序很慢,哪怕是只增加了一行代码,在IDE的输出中看到只重编了一个cpp文件,最后链接生成花了近4分钟。这个有点莫名其妙,但是代码功能也加了好几个模块了,一时拿不定主意,到底是哪个模块影响了,经过不断地移除模块,最后定位是引入spdlog后,生成应用程序就显著变慢。

header-only与lib

网上很多文章都介绍,spdlog是header-only的第三方库,也就是说只用把头文件引入工程即可,很方便。确实如此,结合网上大量的资料,很快就能生成日志文件了,简直不要太爽。
但是他们却没有告诉你,这样其实每次编译都要重新编译链接这个spdlog相关文件,功能这么强大,齐全的日志模块,编译链接花些时间,也是正常的,但是这也太影响调试了,每次都要修改代码。

MingW编译spdlog lib库

在网上搜索spdlog编译lib库,资料就少多了。而且我查到的资料都是MSVC编译的,而我用的是MingW编译器啊,我可不想去按照VS2022这个庞然大物。
我直接用QtCreator打开spdlog的CMakeListes.txt文件,轻轻地点击编译,spdlib.a就生成了。

SPDLOG_COMPILED_LIB

编译库还是很顺利的,但是项目如任何知道你是用header-only还是lib的形式使用spdlog呢,就得在CMakeListes.txt文件中加入 target_compile_definitions(hmApp PUBLIC SPDLOG_COMPILED_LIB)

至于后面就是CMakeListes.txt文件中正常的引入spdlib.a了,然后再修改代码编译发现,这次生成应用程序快多了。

总结

又到了总结时间了,要命的问题很多 ,但是命只有一条。在解决了这个问题之后,以后就明白了header-only不是银弹,合适的才是最好的。

http://www.xdnf.cn/news/281035.html

相关文章:

  • 使用 OpenCV 和 Dlib实现轮廓绘制
  • 「Mac畅玩AIGC与多模态18」开发篇14 - 多字段输出与结构控制工作流示例
  • 【MySQL】用户管理
  • Javascript学习笔记1——数据类型
  • 【哈希表的简单介绍】
  • Python|Pyppeteer实现自动登录小红书(32)
  • PyQt5基本介绍
  • 第八章.javaI/O和反射机制
  • 【深度解析】DCN-V2:Google新一代特征交叉网络,如何实现推荐系统精准度飞跃?
  • [硬件电路-7]:模拟电路常见元器件 - 功率检测与PD光电二极管
  • SpringBoot简介详解:从入门到精通
  • 学习方法讨论——正论科举精神的内核
  • 51单片机入门教程——每个音符对应的重装载值
  • 解决在 Linux 中 WPS 字体缺失问题
  • 算法学习时段效能分布
  • GateWay使用
  • Linux系统之----进程控制
  • 【C++】哈希表
  • 调试Cortex-M85 MCU启动汇编和链接命令文件 - 解题一则
  • JAVA---多态
  • 文章记单词 | 第61篇(六级)
  • SpringBoot的启动流程
  • Encoder和Decoder的区别
  • MySQL Binlog二进制格式与解析详解
  • MySQL — 数据查询
  • 如何提高情商?(优化版)
  • 【RocketMQ Broker 相关源码】- broker 启动源码(1)
  • 身份认证、访问控制技术、SSO单点登录技术、特权访问管理、身份治理与管理——数据安全守护者
  • 支撑座的安装精度对滚珠丝杆性能有哪些影响?
  • 5.3【T】pc