Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 在mac上安装应用程序,并在捆绑包外安装共享库_Macos_Qt_Installation - Fatal编程技术网

Macos 在mac上安装应用程序,并在捆绑包外安装共享库

Macos 在mac上安装应用程序,并在捆绑包外安装共享库,macos,qt,installation,Macos,Qt,Installation,我正在开发一个带有一些库依赖项的Qt应用程序,为此我必须制作一个安装程序 从我所读到的一切来看,似乎最好的方法是在myapp.app/Contents/frameworks中创建一个包含所有库依赖项和所需Qt框架的捆绑应用程序 还有其他并行创建的应用程序。。。这也将被部署到mac上。它们将具有相同的库依赖项,并且将使用相同的Qt版本构建 在这种情况下,将库和Qt安装在捆绑包之外是有意义的。。。因此,两个(所有)应用程序都可以访问,而不必拥有相同库的多个副本 这看起来合理吗?而且可以用MacOSX

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

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

还有其他并行创建的应用程序。。。这也将被部署到mac上。它们将具有相同的库依赖项,并且将使用相同的Qt版本构建

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


这看起来合理吗?而且可以用MacOSX的捆绑岛概念来实现吗?我该如何创建这样一个将库放在应用程序包之外的安装程序?

部署Qt for OS X的最简单方法是使用macdeployqt命令行工具,并且您已经正确地确定了正常方法是将框架放在应用程序包内,但多个应用程序都会有框架的副本

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

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

Apple为应用程序定义了各种“”,最初,最有可能的位置是“应用程序支持目录”,但文档说明这是用于:-

支持应用程序但运行应用程序不需要的任何类型的文件

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

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

另一方面,考虑你正在开发多少应用程序,并且将框架多次绑定到它带来的优点是一个问题,例如允许用户干净地移除应用程序及其所有依赖项,以及减少框架被意外更改或删除的问题


如果您选择将其从外部移动,您可以参考的答案,该答案全面解释了如何在使用install_name_工具更新了框架上的二进制依赖项后制作安装程序包,如上所述。

该应用程序将不会通过Apple Store部署。我将不得不阅读更多关于制作安装程序包的内容,这是一个很好的资源,谢谢。