Qt 裁剪
Qt Lite裁剪Qt库
Qt5.8开始,引入 Qt Lite 裁剪工具
网页版
Qt Configuration Tool裁剪工具
Qt ConfionTool是 Qt Lite的可视化工具,必须有商业Qt许可证才能使用
使用说明
Qt Configuration Tool | Qt for Device Creation 6.2.3
加速启动
通过定制化bootloader,可以将启动时间从23s减少到1.26s,但只是图像显示,后台还需要初始化一段时间才能操作
feature 手动定制
减少应用体积
经过精简 feature 后,生成的Qt 库文件体积会减小,同时编译后的 Qt 应用程序体积同样也减小
在我使用的源码里,Qt一共有38个大分组,比如说qtbase,qt3d等等。QtLite目前主要优化了qtbase这一个分组,也是最常用的一个。不使用QtLite的情况下,全部编译完成后,一共会得到60个库。这一次我编译后,通过skip(跳过编译),还有QtLite,一共可以去掉42个库,剩下18个。
feature 间相互依赖
目前Qt有一个feature列表,里面记录了Qt有哪些feature,有100多个。我的理解就是这里的feature都是可以去掉的,这个列表存放的位置在源码的 qtbase/src/corelib/global/qfeatures.txt
(实测找不到此文件)
不过呢,在我的实际使用中,我发现这个列表里的并非都可以去掉,我只能说一大半是可以去掉的。要我说怎么区分哪些可以,哪些不可以。首先是看Requires,模块间是相互依赖的,被Requires的模块去掉的话,Requires它的模块就会没法正常编译。在Requires都得到保证的情况下,也不是说所有模块都可以去掉,有时候编译会报错,那么只能把去掉的feature加回去。
去除QClipboard
Qt里有一个类,叫QClipboard,就是剪切板相关的功能。但是很多人出于某些原因,不用这个,或者用了系统的API。那么这样的话,这个QClipboard就没有任何存在的意义了,我们就可以直接去掉它,以缩减库体积,最终缩减应用的体积。
首先我们要重新编译Qt的源码,然后在配置的时候,添加特定的参数,来进行配置,去除掉这个功能。
参数很简单,就是 -no-feature-clipboard
配置好后,重新编译Qt,就可以了