引子
由于 AnimatePacker的打包发布用的是Qt动态编译,且为了给没有Qt环境的朋友使用,会集成一些dll,所以造成了一些不便。(策划和美术都喜欢一个exe的东西吧= =)
个人对Qt静态编译不怎么感冒,大约是因为比较折腾,所以一直没弄。
近几年各种虚拟化工具迅猛发展,易用性和稳定性越来越好。最近尝试了一下,可以用,也比较简单,所以整理一下。对于我们开发一些常用的文本工具以及游戏编辑器来说,足够用了。
注意:我的环境是指windows下,如果你在其他环境下使用,本篇末尾有一个和Qt开发群友人生如戏(921742079)的对话,可以参考。
第一步、编译你的exe
使用release模式,动态编译exe,这个没得说,正常Qt开发的操作。
第二步、获取依赖的dll
在windows下面,动态发布Qt程序,需要获取你需要的dll,然后和exe放到一起发布
有两个工具可以获取你需要的dll
工具1:Dependency Walker
打开此工具直接将你的exe拖拽进去即可,然后窗口中会显示exe依赖的dll
优点是:他会找到发布需要最少的dll,有利于我们做体积小的发布包。
缺点是:虽然我们做程序的一般都会把path系统变量配置好。这个工具比较傻,只会在system32下找,并不能找到所有dll的真正路径。
工具2:Process Explorer
这个工具需要你首先运行exe,然后找到exe的进程,就可看到依赖的dll了
优点是:他会找到所有需要的dll的路径
缺点是:会把一些加载的插件dll和其他一些非必需的dll也显示出来。
你可以选择这两个工具同时使用,或者用其中一个。
第三步、使用虚拟化工具打包压缩
本篇文章的主角出场,他叫:Enigma Virtual Box。名字很猛,翻译过来就是:英格码虚拟盒。
这个工具也非常简单
操作如下:1.设置exe 2.拖拽dll到窗口 3.打开文件选项 4.启用压缩
然后我们点“执行封包”就可以了。
最终产品:
参考文献:
http://hi.baidu.com/cyclone/blog/item/d77a86182fb915b84bedbc57.html
附录:关于Qt个平台发布的对话
请教个问题
如果用Enigma Virtual Box之类的软件,打包发布Qt动态编译的共享软件,或免费软件
人生如戏(921742079) 11:21:18
你指什么怎么样?
效率?
一样慢
goldlion(233424570) 11:21:32
恩,综合考虑吧
人生如戏(921742079) 11:22:00
放自己目录里面,没事
goldlion(233424570) 11:22:34
我现在主要是对这两者效率差别,没有数值上的概念
哈哈
人生如戏(921742079) 11:23:19
我试过的,一样慢
不过你要用三方的工具打包,可能会更慢一点
goldlion(233424570) 11:23:41
是哦
人生如戏(921742079) 11:23:45
因为三方的工具可能是用来加密的
goldlion(233424570) 11:24:57
静态编译一般用来发布商业软件吗?对速度要求高的一般是哪些商业软件?
我只是用Qt写一些文本工具,和游戏编辑器,不接触商业发布这块东西= =
人生如戏(921742079) 11:26:03
没太大区别
linux下,我一般静态
windows和mac下,动态
mac下qt有打包工具
windows下么,找到dll,放一起就可以了
linux下,很多库有的机器有,有的没有,最好还是静态一下
goldlion(233424570) 11:27:16
非常感谢
本文转自 老G 51CTO博客,原文链接:http://blog.51cto.com/goldlion/834075,如需转载请自行联系原作者