当前位置: 首页 > 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.dtcms.com/a/171365.html

相关文章:

  • 系统思考:核心价值与竞争力
  • Python绘制误差棒:深入解析数据的不确定性
  • 比HashTable更先进的ConcurrentHashMap及其多线程协助扩容机制
  • 汇编常用语法
  • Spring的数据库编程
  • Linux:web服务
  • Warp调度器:藏在显卡里的时间管理大师
  • 【vue3】黑马程序员前端Vue3小兔鲜电商项目【八】
  • Flowable7.x学习笔记(十九)归还我的待办
  • ARM寻址方式
  • 【时时三省】(C语言基础)怎样定义和引用一维数组
  • 【Redis】Redis常用命令
  • 排序功法入门指南【江湖算法笔记】
  • 13.Excel:分列
  • 【论文阅读】LLMOPT:一种提升优化泛化能力的统一学习框架
  • Cona编译问题
  • 工程师 - What is EMF?
  • 工程师 - 小米汽车尾部主动扩散器
  • 文章记单词 | 第64篇(六级)
  • 湖仓一体架构解析:如何平衡数据灵活性与分析性能?
  • 五一作业-day01
  • 从入门到登峰-嵌入式Tracker定位算法全景之旅 Part 3 |混合定位实战:Wi-Fi RTT / LoRa / BLE RSSI AoA 多源融合
  • Python3与Dubbo3.1通讯解决方案(dubbo-python)
  • java技术总监简历模板
  • device_create_sys_dev_entry
  • YOLOv7细节解读
  • 虚函数 vs 纯虚函数 vs 静态函数(C++)
  • 在Qt Creator中使用CUDA
  • 25.5.4数据结构|哈夫曼树 学习笔记
  • mysql中int(1) 和 int(10) 有什么区别?