个人比较习惯,如果是开发桌面应用程序,都是习惯先看怎么打包,打包完成后,发送到别人的pc是否使用方便,可能当年做的第一个上位机是用labview写的,这个号称图形化编程,只要把相应的控件拉过来就行,但是打包的时候,就只能打包成安装包,不知道现在有没有可以直接打成exe,毕竟好多年没用了;然后开始搞mfc,这个靠点谱,但是吧它的那个串口组件被微软启用了,现在忘记是哪个了,然后又得换;这次终于找上了c#,当时开发用的是winfrom,用winfrom做的还可以,直接打包成exe,可以直接使用,真爽;前几天去看了下,发现winfrom找不到了,现在只有WPF,然后尝试了一下,图形界面用了一个axml的格式来替换了,就简单写了写,感觉还行;这次换一下qt,qt的好处就是跨平台,所以来尝试一下,但是打包可能复杂一点吧,接下来我们学习一波。
2.1 编译
通过上一节,也知道了编译的路径在哪了
我用的是qt5.10.1,点击左边的项目,然后在构建设置中有构建目录,我们就在这里找就可以了。
还有我们编译的时候,是不是有debug和Release;如果是要发布的话,就需要选择release这个小一点。
位置在右下脚。
然后点击绿色按钮可以直接编译运行了。
结果:
成功就弹出了这个页面。
如果我们去到编译好的文件中查看,就会发现丢失了dll等文件
这些dll其实就是qt的库文件,我们现在是找不到他们,一个比较简单的方便就是把qt的库文件添加到环境变量中,不过我不喜欢这种方法,这种方法也只是自己电脑中使用,对其他电脑使用不了,这方法不靠谱,
2.2 windeployqt打包
接下来我们使用官方工具windeployqt进行打包,需要把上面生成的exe文件,放入一个新的文件夹中,比如:
然后我们来看看官方的工具在哪:
然后用命令进入我们之前创建的目录下,里面有我们的exe文件,接下来就可以用命令打包了:
如果经常使用linux命令的,应该都比较熟悉,一般做qt的,应该也熟悉linux命令。
然后我们回到我们创建的demo目录,是不是看到好多dll,这些就是我们的exe程序依赖的dll文件,windeployqt这个命令,就是通过找到exe文件的依赖,然后去不同路径把缺少的dll文件全部拷贝过来,这样我们就可以直接点击打开exe文件了。
看效果:
是不是跟上面的效果一模一样。
然后我们出来看看文件大小:
竟然啥都没有就需要47M,果然qt写的exe就比较大,这也难怪,因为用c#写的都是调用win的方法,也就是方法应该集成在系统中,qt的需要打包成dll,所以较大,也正是因为这个,才能实现跨平台。
2.3 Enigma Virtual Box打包
在网上查找打包工具的时候,除了上面的官方打包工具外,网友还推荐了Enigma Virtual Box这个软件打包,好像是能把这个文件夹中的文件,全部压缩成一个exe,我们就来试试吧。
软件打包界面:
打包出来的软件:带了_boxed的后缀,大小也是一样的,看来就是纯粹的打包。
不过我把这个exe复制到其他路径下,也是说找不到dll,不知道哪里操作错了,算了,以后再分析吧,目前就用windeployqt这个打包吧。