Qt开源项目SerialTool本地编译全过程

背景:

那天在网上看见有人分享了个Qt的练手项目:QserialTool,界面看起来挺友好的(比sscom好看不少),我就想下载下来学习一下嘛~按着人家的连接就去了github,下载下来体验体验(上面的说明我大体看了一眼,没仔细看)。

交代一下我的编译环境:Qt5.9.8,win10,64位,mingw32编译器

过程:

1、环境变量

下载了这个之后,我就想编译一下,我电脑装了两个版本的Qt,一个是5.5.1,一个是5.9.8,Creator的版本也不一样,因为5.9.8版本已经跟Creator集成了。公司项目用的是5.5.1,自己玩的时候那个版本太老了,用的5.9.8。我记得看见QserialTool上面说要求C++11的特性,我就先改了一下环境变量。qmake和mingw32-make的路径都换成5.9.8版本的路径了,截图看一下:

Qt开源项目SerialTool本地编译全过程_第1张图片

Qt开源项目SerialTool本地编译全过程_第2张图片

上面是qmake和minggw32-make的环境变量设置,为了防止意外,我连PATH里面的路径顺序都重新排列了,把5.9.8的都往上排了,也有截图:

Qt开源项目SerialTool本地编译全过程_第3张图片

2、开始编译

设置好了这些个环境变量,我就开启我的Qt了,第一次Creator打开需要配置一下,毫不犹豫选择5.9.8的配置(我的有5.5.1的配置,标志很清楚),配置好了之后,我就寻思编译试试吧。

第一次编译报错了,缺少文件:Qsci/qsciscintilla.h,这个我以前没用过(见笑了哈),我去搜索了一下,是个可以高亮显示的一个文本编辑控件,网上都说挺优秀的一个控件,听着我就想试试~(*^▽^*)

3.QSciscintilla控件安装

我去下载了这个控件qsciscintilla,下面是截图:

Qt开源项目SerialTool本地编译全过程_第4张图片

下载的链接分享一下:https://riverbankcomputing.com/software/qscintilla/download

这个控件下载了之后,我就寻思编译一下,我看见一个博客写的很详细,跟我的环境也很类似的,感谢作者!分享一下:

QsciScintilla的使用方法总结(一个很好用的文本编辑器库):

https://blog.csdn.net/qq_19528953/article/details/52659109

我就按照这个博客说的执行了下面的操作(前提是要在QsciScintilla的qt4qt5文件夹下运行命令窗口,然后运行下面的指令):

qmake qscintilla.pro     #使用qmake工具生成makefile文件
mingw32-make             #使用Qt5.7 MinGW版本自带的make工具按照makefile里面的定义的方式编译qscintilla的源文件
mingw32-make install     #将编译生成的库整合到自己的Qt源文件中

编译过程异常顺利,我寻思编译好了可以用了吧?

4、第二次编译失败

这次失败有点出乎意料,因为我用release运行没有任何问题,用debug就不行,报错的样子是这样的:

第一个错误QIODeviceXXXXXX好解决,我以前遇到过,也知道那个语句干嘛的,就是开启TXT模式,具体的可以看着链接:

https://blog.csdn.net/yimuta9538/article/details/103769756

第二个错误Qt QWidget : Must construct a Qapplication before a Qwidget,我以前没遇到过,这个感觉好像工程里面文件有问题呀,没有构建Qapplication就用了Qwidget

5、错误解决

第一个错误直接去把代码中的语句屏蔽掉,没啥太大影响,回头需要用,就给它换个地方得了。

关于第二个错误,我需要去认真查找原因了,先去搜索了一下,找了网上的几乎全部的相关资料得出两个原因:

第一个是真的就如字面意思所说;

第二个是说release库和debug库调用混乱。

我不信是第一个原因,要是这样的话,作者肯定跟我遇到同样的错误;而且,我也确实刚刚添加了一个控件的静态库呀,所以,我猜是第二个原因。

实际上,我们还有第二个线索,右键点击Qt报错那里,选择显示原始输出,我就看到了下面的情况:

它其实是找不到lqscintilla2_qt5d这个库了,我用everything搜索了一下我的电脑,还真没有,去掉字母“d”,找到一个,在release文件夹里面,我估摸着是因为我刚才编译的时候用的是release模式,所以只有realease库,没有debug库,我去release文件夹对应的debug文件夹里瞅了瞅,空的??!! ̄□ ̄||

那我就得想办法给他用debug模式编一下,怎么编呢?实际上,我走了不少弯路,修改了pro配置文件,还是不行,debug里面还是空的。欠抽的我就灰溜溜的去GitHub上面瞅瞅项目说明吧,说不定能有点线索。感谢作者,链接奉上:

https://github.com/Skiars/SerialTool

然后我就懵逼了。。。下面是截图:

Qt开源项目SerialTool本地编译全过程_第5张图片

天哪!写的这么详细!我刚才都干了多少蠢事情??!!我是谁?我在哪儿?o(╥﹏╥)o

我内心百感交集,只能在qt4qt5文件夹的命令窗口上敲下了如下代码:

qmake CONFIG+=debug
mingw32-make
mingw32-make install

运行之后,我又一次回到Creator界面。

6、结果

Qt开源项目SerialTool本地编译全过程_第6张图片

看见上面这个图了吗?debug和release都可以完美运行了,我可能是蜘蛛。。。。┭┮﹏┭┮

最后

不得不给SerialTool的作者点个赞赞赞!软件写的好,说明写的又这么详细!真心感谢~

好像是下面的大佬写的。。。。他自己在论坛说的,不是我瞎说的。

Qt开源项目SerialTool本地编译全过程_第7张图片

 

最后,希望大家做啥事情,用啥软件都先看看说明书!说明书!说明书!说明书!说明书!说明书!

你可能感兴趣的:(QT,QserialTool,Qt,QsciScintilla,QWidget,:,Must,construct,a,Qap)