【问题标题】:First time Deploying Qt Application, dynamically link?第一次部署 Qt 应用程序,动态链接?
【发布时间】:2012-09-14 19:51:24
【问题描述】:

我开始考虑部署我一直在开发的 Qt 应用程序,但在此之前我从未部署过任何 C++ 应用程序。

我希望能够将我的产品作为预编译的可执行文件发布,该可执行文件动态链接 Linux/Windows 的共享库文件 (Qt),以便有一个可执行文件在其自己的子目录中查找库而不是库可能会因其他 Qt 产品而安装。

这是可能的吗?或者必须单独安装 Qt 库文件以便应用程序链接它们?我想避免要求最终用户在他们的系统上安装任何东西,同时也避免静态链接。

【问题讨论】:

    标签: c++ qt deployment dynamic-linking


    【解决方案1】:

    这是 Qt 的正常行为。如何做到这一点很大程度上取决于您的构建系统。

    如果您使用 CMake,您可以使用 CPack 生成安装程序。这是一个link,用于将所需的共享库添加到安装程序。 CPack 为 Linux、Windows 和 Mac OS X 制作了许多不同类型的安装程序。

    您还可以使用 NSIS 生成自己的安装程序。这涉及更多但可行。

    Qt 有 documentation 介绍如何部署使用其库的应用程序。

    在我的公司,我们同时使用 CPack 和 NSIS。 CPack方式简单很多,网上的例子也比较多。

    【讨论】:

    • 但我不想安装,该应用程序需要可供没有管理权限的人使用。我想要静态链接应用程序的好处,但没有静态链接(许可问题)。
    • 即使在这种情况下,您所做的只是像安装程序一样提供文件,而不是将它们放在受限位置。例如,您可以让 Windows 上的安装程序请求用户权限并将文件放在桌面上。只要您不做需要特权访问的事情(即写入注册表)。
    • 我不明白你的意思?那我为什么需要安装程序才能安装到桌面?
    • 我想说的是,您需要提供的文件与制作安装程序相同。如果您使用 Qt 制作 GUI 应用程序,那么您需要在 Windows 上提供 QtCore4.dll 和 QtGui4.dll。这是制作安装程序时提供的信息。您可以轻松地创建一个包含所有这些文件的文件夹并以这种方式分发该文件夹。制作安装程序更像是一种自动化的方式来做同样的事情。
    • 即使使用 CPack 也不需要安装程序。它也可以生成 tarball 和其他包。以 CPACK_GENERATOR "TGZ" 为例。
    猜你喜欢
    • 1970-01-01
    • 2010-11-03
    • 1970-01-01
    • 1970-01-01
    • 2016-11-23
    • 2016-04-23
    • 2011-09-07
    相关资源
    最近更新 更多