当前位置: 首页 > 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不是银弹,合适的才是最好的。

相关文章:

  • 系统思考:核心价值与竞争力
  • Python绘制误差棒:深入解析数据的不确定性
  • 比HashTable更先进的ConcurrentHashMap及其多线程协助扩容机制
  • 汇编常用语法
  • Spring的数据库编程
  • Linux:web服务
  • Warp调度器:藏在显卡里的时间管理大师
  • 【vue3】黑马程序员前端Vue3小兔鲜电商项目【八】
  • Flowable7.x学习笔记(十九)归还我的待办
  • ARM寻址方式
  • 【时时三省】(C语言基础)怎样定义和引用一维数组
  • 【Redis】Redis常用命令
  • 排序功法入门指南【江湖算法笔记】
  • 13.Excel:分列
  • 【论文阅读】LLMOPT:一种提升优化泛化能力的统一学习框架
  • Cona编译问题
  • 工程师 - What is EMF?
  • 工程师 - 小米汽车尾部主动扩散器
  • 文章记单词 | 第64篇(六级)
  • 湖仓一体架构解析:如何平衡数据灵活性与分析性能?
  • 建邦高科赴港上市,大股东陈子淳系山东建邦集团董事长陈箭之子
  • 今晚上海地铁1、2、10、17号线加开定点班车至次日0点
  • 成为中国骑手“孵化器”,环球马术冠军赛是最好的历练舞台
  • 保持高位运行,今天全国铁路预计发送旅客1800万人次
  • 新加坡2025年大选开始投票
  • 首日5金!中国队夺得跳水世界杯总决赛混合团体冠军