在Mac上部署时自动包含Qt库到.app包中

7

我正在使用Qt Creator部署我的Qt应用程序。在Mac上,我想把所需的Qt库包含在.app包中。有没有什么办法可以使用Qt Creator自动完成这个过程?还是需要使用命令行?如果是这样,我该如何操作?


你不能使用 "macdeployqt fooapplication.app" 吗?不过它还不能处理 QML。 - László Papp
另外,你有读过这个吗?http://qt-project.org/doc/qt-5.0/qtdoc/deployment-mac.html - László Papp
1
我其实不建议将macdeployqt或任何其他设置创建流程放入构建流程中,因为每次调试/重新编译程序时都会执行此过程。您很快就会再次禁用它(就像我所做的那样)。最好有一个单独的shell脚本来创建您的安装文件。 - Jens
当然,你可以添加一个名为install或类似的目标,并简单地调用make install。如果应用程序不是最新的,这可以自动构建它。 - Kuba hasn't forgotten Monica
3个回答

14

macdeployqt命令行工具将添加您的Qt项目引用的所有必要的Qt库。

如果您需要其他第三方库,则需要手动复制这些库并使用install_name_tool命令设置它们的路径。

您可以使用otool命令检查应用程序引用的库。例如:-

otool -L MyApplication.app/Contents/MacOS/MyApplication

对于Qt Creator,我倾向于编写一个脚本来添加必要的库并调用macdeployqt,然后在项目中添加一个构建步骤来调用该脚本。

一个只添加Qt库的示例脚本可能如下:

#!/bin/bash
pwd
echo Copying QT libraries...
macdeployqt ./MyApplication.app

5

你可以简单地运行 macdeployqt foo.app。Qt Creator 当前并不支持该功能。但是,你可以在 QtCreator 项目设置中注入自定义命令。

目前它还不支持 QML。在 codereview 下有补丁即将推出。请查看以下链接获取详细信息:

https://codereview.qt-project.org/#q,status:open+project:qt/qttools,n,z

注意:macdeployqt 不应用于常规开发和调试!只应使用于部署时。否则,即使你只是因为测试而进行了轻微更改重新编译代码,它也会每次构建时执行。这可能会拖慢该过程,但对于部署来说应该没问题。


1

在QT6中,我能够完全在QT Creator中完成它:

在项目/构建中,在“make”之后添加自定义构建步骤(可能只想对“release”配置执行此操作):

命令:%{Qt:QT_HOST_PREFIX}/bin/macdeployqt

参数:%{ActiveProject:BuildConfig:Path}/%{ActiveProject:Name}.app - qmldir=%{ActiveProject:NativePath}

工作目录:%{buildDir}

我可以通过将结果的.app文件传输到我的测试机器上进行测试。

screenshot of qt creator custom build step

参考: https://doc.qt.io/qt-6/macos-deployment.html#macdeploy


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接