标题:Qt 5.7编译独立的designer
作者:spygg
日期:2019-03-28 21:00
内容:
主要工作是将lib文件进行抽离,从而避免对QtDesignerComponents 和 QtDesigner 的DLL依赖,而且可以任性的修改为我所用.
效果:
学到了如何将系统已有的文件"整块移植"
已知问题:
release在QtCreator直接编译运行程序会崩溃(可以通过windeployqt引入相应dll文件后再次运行就OK了), debug版本无此问题
代码来源:
安装目录下src文件下的工程
要点:
0.将原工程中的除designer.pro和其上级pro之外的pro都屏蔽掉,同时将屏蔽后的pro中的pri文件添加到designer.pro中,注意文件顺序(参考原pro文件),在添加时可以通过在工程上右键"添加到工程"将文件加到pro文件中后,修改为include("相对路径"),从而可以解决相对路径问题
1.增加DEFINES += QT_DESIGNER_STATIC,用来避免dll导出警告(和一部分错误)
2.对于出现的mutidefine问题,可以屏蔽相应的cpp文件达到目的(pri文件中)
3.在编译遇到undefine refrence之类的问题时,仔细辨别如果缺失没问题,这时删除所有新生成的文件重新编译也许是个不错的主意
4.在release模式崩溃时,使用windeployqt 将所需dll拷贝过去即可
5.屏蔽掉工程中的Q_INIT_RESOURCE(widgetbox);之类的东西(只有插件才需要初始化资源)
6.如果要修改和系统重名的(DLL中的东西)可通过修改包含文件, 如将#include 替换为#include "../lib/components/qdesigner_components.h"
7. 在工程中加上如下代码可以排除对designer模块的依赖
INCLUDEPATH += ../../../../include/QtDesigner/5.7.0../../../../include/QtDesigner/5.7.0/QtDesigner../../../../include/QtDesigner
8.在编译设置的自定义步骤的方式可以添加批处理文件来达到自动化的目的
9.在编译设置中修改编译参数-j8(本次有效)或者在系统环境变量中增加(一劳永逸)来大大的加快编译进程
拷贝.bat文件
[co ..
#1 [liudianwu 03-29 21:32]
编译出来后的exe双击运行会崩溃,环境没有问题的,其他exe双击都可以正常运行,构建套件一致,不知道什么原因!
#2 [spygg 03-31 00:27]
我是用的mingw32版本的Qt
#3 [spygg 03-31 00:28]
在两台电脑上编译都没问题,没试过vs版本的
#4 [liudianwu 03-31 09:57]
编译是没有问题,能正常生成exe,但是exe不能用,不知道是不是我这边环境有关系。
#5 [spygg 03-31 19:22]
估计是了,我这边能运行,release版本的要用windeployqt把DLL拷贝过去就行,debug可以直接运行