笔者安装的是QT SDK。(发行版本这是前提,很重要,不是源码编译版本)
QT不像JAVA那样编译出来就马上可以run everywhere了,运行时还得有必要的运行库支持。接下来就是准备工作:
首先,你得有个编译出来可以运行的程序(嗯,这里代码是什么任君选择,本文篇幅有限就不多说了。)
第二,用release的方式构建工程,而不是debug(相信很多情况下默认是该选项)。对,就是在qt creator 左下角大大的运行按钮(绿色)上面那个选项可以配置。
第三,编译构建工程。去到工程目录下的release目录下可以看到执行程序,我们这时打开一般是可以正常运行的(您的代码没有明显的BUG的情况下)。但是这是一种“假象”(相对我们把这程序扔到别的地方来说。),你可以把这程序放到工程目录以外的目录里单独运行一下,会提示如下图的,找不到xx.dll。
第四,因为QT其实只是类库,我们用QT来写代码,其实也是要依赖QT的机制。故我们写出来的程序,得通过QT来与系统沟通好才行,显现沟通的代码不可能是我们来写,so,我们得有运行必要的库支持。下图即使必要的动态链接库(libgcc_s_dw2-1.dll mingwm10.dll QtCore4.dll QtGui4.dll这是最基本的,如果有用到qt里别的插件模块得另外添加,后面会讲到):
而这四个库如果在qt安装目录下查找你可能会晕倒,因为出现一大堆同名的,用哪个好呢?我们需要用到的就是 C:\QtSDK\Desktop\Qt\4.7.4\mingw\lib (这里我的SDK是安装在C盘,请根据自己情况找)。我们把以上四个库放在release版本执行程序同一个目录,这时就可以顺利运行了。
还有一种普遍的情况得说以下,就是我们用到第三方库或者QT自带的插件模块。例如我的程序要用到了phonon了,一般要进行如下操作:
1 工程文件xxx.pro里添加红色部分 QT += core gui phonon
2 找到phonon4.dll 还是在刚才所说的lib目录下找,复制到执行文件同一目录。
2 找到phonon插件所在目录
C:\QtSDK\Desktop\Qt\4.7.4\mingw\plugins\phonon_backend(这是笔者的)把此目录复制到release执行文件所在目录下的plugins(这个目录也需要自己创建)下。
3 在源代码里的main.cpp修改如红色字体:
QApplication a(argc, argv);
a.addLibraryPath("./plugins");
大功告成,编译去吧。
最后就总结一下,你要发布一个QT程序最终需要的文件如下:
1 一个独立的目录,内有经过release构建的执行程序(代码得根据以上所说做出修改)
2 最基本的4个库文件 libgcc_s_dw2-1.dll mingwm10.dll QtCore4.dll QtGui4.dll放在与执行文件同一目录下。
3 如果程序代码用到了插件或者第三方库,同样地放在同一目录下。而插件的支持要在代码内添加子目录路径。(思考一下,为什么不都放在同一目录?)当然为了方便扩展和便于管理。
来到了QT的发布过程,虽然初学者很难得写个程序可以发布在网上分享的,但是作为一个程序猿,整个软件从设计到发布的过程都应该亲身感受一下才能对IT这个行业有更深的认识。接下来的内容只是简单地介绍如何使用NSIS来打包制作安装包(发布的程序不限于QT制作的,请注意,所以你想发布的都适用,当然这得看平台。),故如果想提高的请自己百度谷歌之。
首先这里附上软件下载地址:http://www.onlinedown.net/soft/22742.htm
我们将要使用的是NSIS这个软件,是一个非常优秀的开源软件,用脚本来制作我们需要的安装包。当然,我教大家的是入门体验级的,用可视化的方式。
我们选择“文件--新建脚本(向导)”,也可以快捷键ctrl + w。
下面的就很简单了,修改好配置就下一步,共8步,下面我会说明第几步地简单说以下。 第一步请自己填写。
第二步可以选择icon和安装包的名称。
第三步有些有趣,可以选择闪屏,也就像我们qt里的 QSplashScreen 那样的启动画面,我们可以选择一张bmp格式的图片,选择停留的时间和淡入淡出的时间。背景音乐也是可以设置来玩玩。
第四步选择程序的默认安装目录,这里一般是指C盘的Program files文件夹下与程序同名的文件夹。这里有个授权文件,其实就一个txt,需要我们自己指定,可以写上一些程序发布的主要事项和作者的声明(也就是自定义的文本)。
我们选择程序及其运行必要的运行库及图片声音等资源的时候到了。如果只是用到一些简单的库,我们可以选择单个文件添加。如果你的程序下面还有子目录,我们就需要用addDirTree,这里得注意,如下图
选择可以保证我们安装过去也是包含子目录的而不是一堆文件都放在一个文件夹。(这对我们需要用到QT插件或者一些IO操作时很必要)
第六步创建桌面快捷方式,基本下一步即可。
第七步没有什么特殊的参数添加的话即可以下一步。
第八步基本修改一些[name]那里,下一步即可。
最后,我们如下图,编译脚本。
大功告成,我们程序的安装包生成了,拿去别的桌面分享和测试一下吧!