gpt4 book ai didi

macos - 在 mac 上使用 bundle 外的共享库安装应用程序

转载 作者:行者123 更新时间:2023-12-04 18:06:03 30 4
gpt4 key购买 nike

我正在开发一个带有一些库依赖项的 Qt 应用程序,为此我必须制作一个安装程序。

从我读到的所有内容来看,最好的方法似乎是在 myapp.app/Contents/Frameworks 中制作一个包含所有库依赖项和所需 Qt 框架的捆绑应用程序

还有其他并行创建的应用程序...也将部署在 Mac 上。它们将具有相同的库依赖关系,并将使用相同的 Qt 版本构建。

在这种情况下,将库和 Qt 安装在包之外是有意义的...因此两个(所有)应用程序都可以访问,而无需拥有相同库的多个副本。

对于 mac osx 的捆绑岛概念,这看起来合理吗?我将如何创建这样一个将库放置在应用程序包之外的安装程序?

最佳答案

为 OS X 部署 Qt 的最简单方法是使用 macdeployqt 命令行工具,并且您已正确识别正常方法是将框架放在应用程序包中,但多个应用程序将各自拥有框架的副本.

建议将 Qt 框架移动到一个单独的外部位置并改为链接到该位置是合理的。但是,您需要仔细管理框架,尤其是在提供更新时,并注意如果框架被删除或更改,您的所有应用程序都将无法加载。然而,这对于任何依赖于框架的应用程序都是一样的。

要考虑的是放置框架的位置。通常,外部框架位于/Library/Frameworks 中,但如果我们都开始将其用于 Qt,则在安装您的应用程序并且其他开发人员使用不同版本的库安装其应用程序框架时可能会出现问题。

Apple 定义了各种' key directories ' 对于应用程序,最初,最有可能的位置似乎是“应用程序支持目录”,但文档指出这是用于:-

any type of file that supports the app but is not required for the app to run

此位置通常用于支持文件,例如供用户选择的模板。如果你的应用程序要通过 Apple Store 部署,如果你使用这个位置被拒绝,我不会感到惊讶。但是,您没有使用 Apple Store,那么您可以在此处部署框架。

如果 Apple Store 是您的部署方法,那么/Library/Frameworks 可能是 Qt 框架唯一可接受的驻留位置,可能会出现我上面提到的问题。

或者,考虑一下您正在开发的应用程序有多少,多次捆绑框架是否真的是一个问题而不是它带来的优势,例如允许用户干净地删除应用程序及其所有依赖项,因为以及减少框架被意外更改或删除的问题?

如果选择外移,可以引用this question的回答。 ,它全面解释了如何在使用 install_name_tool 更新框架上的二进制依赖项后制作安装程序包,如概述 here .

关于macos - 在 mac 上使用 bundle 外的共享库安装应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26590771/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com