我已经阅读了几天有关如何使用 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/