StupidBeauty
Read times:1239Posted at:Mon Dec 27 19:30:46 2010
- no title specified

Qt4.7.0文档翻译:部署Qt 程序,Deploying Qt Applications

部署一个Qt 程序不需要进行任何的C++编程 。你所需要做的就是按照这个文档里描述的步骤以发布 (release) 模式构建Qt 和你的程序 。我们会在部署Qt 示例目录里面提供的 即插即画 程序的同时演示这个过程

静态库还是动态库

有两种部署程序的方式

  • •.静态链接

  • •.共享库(在Mac上叫做框架 Frameworks

静态链接将产生一个独立的可执行程序。优点是 ,你只需要部署很少的几个文件。缺点是 ,可执行程序很大 ,并且没有灵活性(也就是说 ,如果这个程序或者 Qt 有新的版本了 ,那么部署过程就要重复一次 ),而且你无法部署插件

要部署基于插件的程序,你可以使用共享库的方式 共享库也使得可执行程序更小 、更灵活。例如 ,当使用共享库的方式时 ,用户可以自由地将程序所使用的Qt 库升级

另一个可能导致你使用共享库的方式来部署的原因是,你可能想要在一系列的程序中使用同样的Qt 库 。实际上 ,如果下载Qt 的二进 制安装程序,那么你获得的Qt 就是一个共享库

使用共享库的方式来部署的缺点是 ,你将会需要部署更多的文件 。要了解更多 ,就去看 创建共享库

部署Qt 的库

Qt的库

QAxContainer

QAxServer

QtCore

QtDBus

QtDesigner

QtGui

QtHelp

QtNetwork

QtOpenGL

QtScript

QtScriptTools

QtSql

QtSvg

QtWebKit

QtXml

QtXmlPatterns

Phonon

Qt3Support

由于Qt 不是一个系统库,所以它必须 随你的程序一起重新发布;最少要重新发布那些 被你的程序使用的运行时库。然而 ,使用静态链接时,Qt 运行时库就 被编译到可执行程序中了。

通常,你应当将你用到的Qt 的所有插件 都部署,排除那些你确定了对于程序和用户无用的插件。

例如 ,你可能需要部署那些用来实现JPEG 支持和SQL 驱动的插件 ,但是你也应当部署那些用户可能需要的插件 ,包含那些提供易用性的插件。要了解更多关于插件的信息 ,就去看 如何创建 Qt 插件 文档

当你使用共享库的方式来部署一个程序的时候,你必须确保Qt 库会使用正确的路径来查找Qt 插件、文档、翻译等等东西。要做到这一点 ,你可以使用 qt.conf 文件 。要了解更多信息,就去看 使用qt.conf 文档

取决于配置情况 ,可能也需要重新发布与编译器相关的库 。要了解更多信息,就去看与平台相关的程序依赖小节 X11 Windows Mac

许可证

Qt 的某些库是基于第三方库的,而它们并不像 Qt 是采用双许可证的 。所以 ,当你部署一些使用这些库的程序时 ,要小心,尤其是当你将它们静态链接到程序中去时

下面的表格包含一个对于你应当知道的事情的不完全汇总

Qt库

依赖

许可证方式

QtHelp

CLucene

与Qt 一起发布的clucene 版本是采用GNU LGPL 2.1 版或者更新版本的。这对于闭源程序的开发者来说 ,包含者某些暗示。请查看 QtHelp模块文档 以了解更多信息

QtNetwork

OpenSSL

在某些配置情况下 QtNetwork 会在运行时使用OpenSSL。对 OpenSSL 的部署同时受到许可证和出口限制的制约 。可以在 安全套接字层 (SSL) 文档中找到更多信息

QtWebKit

WebKit

WebKit采用GNU LGPL 2 版本或者更新版本。这对于闭源程序的开发者来说 ,包含者某些暗示。请查看 QtWebKit模块文档 以了解更多信息

Phonon

Phonon

Phonon在不同的平台上依赖原生的多媒体引擎Phonon本身采用GNU LGPL 2 版本。请查看Phonon模块文档以了解更多关于许可证的信息,查看Phonon概述以了解它在不同平台上使用的后端的细节

与平台相关的注意事项

部署Qt 程序的过程在各种各样的平台上都不同:

Your opinions
Your name:Email:Website url:Opinion content:
- no title specified

HxLauncher: Launch Android applications by voice commands