有时候在做qt项目的时候,在网上找不到自己所需的第三方库满足需求,而在开发过程中又经常需要使用到某一些功能时,可以尝试自己编译公共的第三方库,在项目需要时将其导入使用
常使用到的库分为静态库和动态库:
Windows:.lib(静态库), .dll(动态库)
Linux:.so(动态库), .a(静态库)
静态库和动态库的区别:
首先需要理解什么是库:库就是提前写好的,完整的,可复用,可导入使用的已经被封装好的代码。在实际的大型项目开发之中,会使用很多的第三方库。
程序编译步骤:
所谓的静态和动态其实本质是指链接方式不一致,主要区别如下
1、链接阶段不一致:静态库对函数库的链接是放在编译时期完成的,动态库则是在程序运行时期进行链接的
2、目标文件:静态库与汇编生成的目标文件一起链接为可执行文件,程序在运行时与函数库再无瓜葛。动态库在程序编译的时候只有一个指向的位置,在程序运行的时候需要把动态库放置在自己指定的位置,所以一般使用相对位置,将动态库一起打包放在压缩包里面
3、加载速度不一致:静态库被打包到应用程序中加载速度更快,动态库还需要在运行时去寻找
4、资源:静态库内相同的库文件数据可能在内存中呗加载多份,耗费系统资源,浪费内存。动态库只需要指定给出一个文件数据的位置即可完成资源共享
好了,现在言归正传咯,qt编译第三方库:
第一步:新建c++库
后面就一直点下一步使用默认设置就好了
第二步:配置pro文件中的参数
第三步:使用左下角的锤子构建生成动态库
第四步:查看指定位置下生成的动态库(Linux(.so)生成了一个动态链接库文件和3个软链接)
接下来就可以在一个项目里面尝试导入自己编译的库调用函数啦
qt导入第三方库的三种方法
第一种:
第一步:使用qt自带的“导入外部库”快捷操作:
第二步:选择导入外部库
第三步:选择相应的路径,可在平台选项中选择自己所对应的平台,这里使用的是Linux
第四步:pro文件自动添加三方库导入语句:$$PWD指的是pro文件所在路径
第二种方法:手动编写路径LIBS += -L 库文件路径 -l库文件名称(可使用绝对路径)
INCLUDEPATH += 库文件所在路径
qt中DEPENDPATH和INCLUDEPATH的区别:
官方文档:INCLUDEPATH:指定编译项目时应搜索的#include目录,也就是用于查找包含的头文件。
INCLUDEPATH:当某些头文件更改时,需要重新编译哪些源文件。如果修改文件夹 foo/ 中的头文件,并且 foo/ 未在 DEPENDPATH 中列出,则不会重新编译任何内容。如果 foo/ 在 DEPENDPATH 中列出,则将重新编译依赖于该标头的源文件。路径可以是相对于 .pro 文件的路径,也可以是绝对路径。
这两者的区别可以参考博客:Qt中的 DEPENDPATH 和 INCLUDEPATH 的区别_qt includepath-CSDN博客
后续在使用的文件内导入头文件调用函数就可以啦