我编写了一个Qt C ++应用程序,并希望在Windows,OSX和Linux上部署它。问题是,它只适用于安装了Qt的机器。
如何让它在没有Qt的计算机上运行?我是否必须使用应用程序设置或其他东西安装它?我没有得到整个连接的东西。
答案 0 :(得分:5)
有很好的工具可以准备分发应用程序。它的macdeployqt
代表OSX,windeployqt
代表Windows。它们将所有依赖项复制到应用程序文件夹中,因此您只需将该文件夹复制到另一台计算机。对于linux,您需要创建包。这个具体适用于不同的linux版本。阅读有关部署here
答案 1 :(得分:3)
在Windows上,建议您随应用程序分发Qt DLL文件。只需将它们放在与安装文件中的可执行文件相同的文件夹中即可。
答案 2 :(得分:2)
在Linux下,您可以使用包系统(请参阅RPM或deb包)
对于Windows,您需要将.ddl文件包含在可执行文件中(以及为什么不将其压缩到安装程序中(请参阅Easysetup工具)
答案 3 :(得分:1)
我无法代表Windows
,但Linux
系统有一个包管理系统,可以检查所需的依赖关系,以便在安装时由包管理系统处理。您只需为您希望支持的每个发行版生成安装包,尽管由于相似性,许多发行版将接受相同的包。
这是Linux
发行版使用的两种流行的包系统。
答案 4 :(得分:0)
对于Windows,Pierre和ypnos的答案都很好。我会添加更改“被鼓励”到必须,因为这是逃脱dll地狱的唯一方法。使用安装程序的缺点是安装应用程序的用户需要管理员权限。只需压缩整个应用程序目录并为用户提供该zip文件就足以让它在任何Windows客户端计算机上运行。
对于Linux,请参阅我的回答on another Stackoverflow question.我给出的解决方案基本上适用于任何Linux发行版。通过启动首先设置LD_LIBRARY_PATH的shell脚本,将所有依赖项复制到应用程序目录并运行应用程序。如果您还有该脚本也可以创建Linux桌面文件,则用户可以双击该桌面文件。然后,运行您的应用将对您的用户透明。许多主要的Linux GUI应用程序(如Google的chrome)都是从桌面文件启动的。脚本的环形交叉口是必要的,因为桌面文件中的应用程序目录是硬编码的,您无法预测用户想要部署应用程序的位置。使用包管理器并不那么简单。此外,Linux还有20个不同的包管理器。
对于OSX,您可以尝试使用Qt实用程序macdeployqt。我们总是遇到该实用程序的问题。我们用qmake脚本自己做。你告诉Qt Creator做一个app_bundle。我已经描述了somewhere else如何对OSX Qt应用进行数字签名。部分签名要求应用程序是独立的。你可以阅读我的答案部分。如果将部署脚本与主pro文件分开,则可以将该脚本重用于所有OSX应用程序。