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

我已经阅读了几天关于如何使用Qt creator或qmake将外部资源,插件或框架复制/更新到我的应用程序的Mac Bundle.

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

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

另一种选择是使用qmake.这些是我迄今为止在“.pro”文件中尝试过的内容:

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

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

基本上什么也没发生.我正在跳“在”test“文件夹中找到相同的”media“文件夹,但什么都没有.不知道我做错了什么.

请注意,“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

到目前为止,似乎没有任何解决方案令人满意.如果我想做一个好的自定义make脚本,我需要分别对每个目标路径进行硬编码.在我的情况下,我有8个不同的目标路径,取决于一些“CONFIG”变量.

我确信qmake解决方案是这样做的官方方式.如果有人能指出我错误64的解决方案会很酷.

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

将命令放在.pro脚本的末尾后,QMAKE_BUNDLE_DATA开始正常运行.

mac{
    MediaFiles.files = media
    MediaFiles.path = Contents/MacOS
    QMAKE_BUNDLE_DATA += MediaFiles
}
本站公众号
   欢迎关注本站公众号,获取更多程序园信息
开发小院