那天在网上看见有人分享了个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版本的路径了,截图看一下:
上面是qmake和minggw32-make的环境变量设置,为了防止意外,我连PATH里面的路径顺序都重新排列了,把5.9.8的都往上排了,也有截图:
2、开始编译
设置好了这些个环境变量,我就开启我的Qt了,第一次Creator打开需要配置一下,毫不犹豫选择5.9.8的配置(我的有5.5.1的配置,标志很清楚),配置好了之后,我就寻思编译试试吧。
第一次编译报错了,缺少文件:Qsci/qsciscintilla.h,这个我以前没用过(见笑了哈),我去搜索了一下,是个可以高亮显示的一个文本编辑控件,网上都说挺优秀的一个控件,听着我就想试试~(*^▽^*)
3.QSciscintilla控件安装
我去下载了这个控件qsciscintilla,下面是截图:
下载的链接分享一下: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
然后我就懵逼了。。。下面是截图:
天哪!写的这么详细!我刚才都干了多少蠢事情??!!我是谁?我在哪儿?o(╥﹏╥)o
我内心百感交集,只能在qt4qt5文件夹的命令窗口上敲下了如下代码:
qmake CONFIG+=debug
mingw32-make
mingw32-make install
运行之后,我又一次回到Creator界面。
6、结果
看见上面这个图了吗?debug和release都可以完美运行了,我可能是蜘蛛。。。。┭┮﹏┭┮
不得不给SerialTool的作者点个赞赞赞!软件写的好,说明写的又这么详细!真心感谢~
好像是下面的大佬写的。。。。他自己在论坛说的,不是我瞎说的。