qt - 如何使用 Qt Creator 或 qmake 将资源、框架或插件复制/更新到 (Mac OS X) "app bundle"

标签 qt deployment bundle qt-creator qmake

我已经阅读了几天有关如何使用 Qt Creator 或 qmake 将外部资源、插件或框架复制/更新到我的应用程序的 Mac Bundle 的内容。

现在我找到了两个主要的解决方案。一种是在“.pro”文件上结合使用 qmake 和一些命令。另一种是执行“自定义部署步骤”脚本。

我希望使用第二个选项,因为我已经有一个小的 make 脚本可以完成我想要的操作。问题是 Qt Creator 提供的变量太少,导致脚本失去了用处。例如,我的脚本使用“目标应用程序路径”作为参数,因此它可以从那里完成所有工作。但如果我错了,请纠正我,Qt Creator 只提供 %{buildDir} 和 %{sourceDir} 变量...

另一个选项是使用 qmake。这些是我迄今为止在“.pro”文件中尝试过的事情:

1) 使用安装命令。我做了一个小测试,尝试以这种方式复制一些文件:

MediaFiles.path = test/media
MediaFiles.files = media/*
INSTALL += MediaFiles

基本上什么也没发生。我希望在“测试”文件夹中找到相同的“媒体”文件夹,但什么也没有。不知道是不是我做错了什么。

请注意,“media”文件夹位于“test”文件夹和“.pro”文件旁边。 (它们都具有相同的层级位置。)

2)然后我尝试了QMAKE_BUNDLE_DATA:

MediaFiles.path = Contents/MacOS
MediaFiles.files = media/*
QMAKE_BUNDLE_DATA += MediaFiles

但这给了我以下错误:

usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file target_file
cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file ... target_directory
make: *** [PathToApp] Error 64

到目前为止,所有解决方案似乎都不令人满意。如果我想做一个好的自定义脚本,我将需要分别对每个目标路径进行硬编码。就我而言,我有 8 个不同的目标路径,具体取决于一些“CONFIG”变量。

我确信 qmake 解决方案是执行此操作的官方方法。如果有人能指出错误 64 的解决方案那就太好了。

还有一些问题: 每次我想要更新我的包时都必须执行 qmake 吗? 我可以使用 qmake 执行 make 脚本吗?

最佳答案

QMAKE_BUNDLE_DATA 将命令放在 .pro 脚本末尾后开始完美工作。

mac{
    MediaFiles.files = media
    MediaFiles.path = Contents/MacOS
    QMAKE_BUNDLE_DATA += MediaFiles
}

关于qt - 如何使用 Qt Creator 或 qmake 将资源、框架或插件复制/更新到 (Mac OS X) "app bundle",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7631249/

相关文章:

c++ - QGraphicsObject 不显示 QPixmap

c++ - 如何使用 QtMqtt 和 SSL 执行安全 MQTT?

rest - jboss fuse 6.2 休息 cxf org.apache.cxf.service.factory.ServiceConstructionException : "No resource classes found"

ruby - 如何在 docker 容器中使用私有(private) gems(GemFury)?

c++ - 将大图加载到QT窗口中并能流畅地放大和缩小

c++ - 如何将 QT 国际化集成到 CMake?

logging - 部署在 .meteor.com 上,但它总是关闭。请向我解释一下这个错误日志

SharePoint wsp 解决方案 : How to Deploy Globally

ruby-on-rails - 如何在 Rails 中 bundle 一个 gem?

android - 使用 android bundle 时,为什么序列化程序堆栈反序列化为 ArrayList?