ran*_*836 12 deployment qt macdeployqt
我有一个应用程序项目依赖于我自己创建的几个共享库.根据Qt 4.6文档"在Mac OSX上部署应用程序":
注意:如果您希望第三方库包含在应用程序包中,则必须将该库的一个重复的lib条目添加到应用程序的.pro文件中.否则,macdeployqt工具不会将第三方.dylib复制到捆绑包中.
我已经将lib条目添加到我的应用程序的.pro文件中,但是当我执行macdeployqt时,我编写的库不会被复制到bundle中.我的.pro文件中有以下内容:
LIBS += -L../Libraries -lMyLib
Run Code Online (Sandbox Code Playgroud)
一切都建立好,就在我尝试从捆绑运行时遇到问题,即"图像未找到"错误.
macdeployqt中是否有错误或者我的.pro文件还有什么问题?
Chr*_*uns 17
badcat是正确的,Qt 4.6文档对macdeployqt工具的可能性有一个非常夸张的看法.
根据我的经验,macdeployqt所做的唯一事情是:
因此,对于要在应用程序包中部署的每个其他二进制文件和库,必须执行以下操作:
运行macdeployqt以享受其有用但无力的好处
macdeployqt <path_to_your_nascent_app_bundle>/foo.app
手动安装额外的库
cp <original_library_path> foo.app/Contents/Frameworks/<lib_name>
找出每个二进制文件链接到哪些库.
otool -L <binary_file_name>
更改二进制文件中的内部库路径
install_name_tool -change <original_library_path> @executable_path/../Frameworks/<lib_name> <binary_file_name>
我编写了一个perl脚本,可以为我的应用程序自动执行这些步骤,但是对于我的特定环境来说,这里发布的内容有点过于具体.
您是否检查了 .app 捆绑包以查看这些库是否真的不存在?
如果是这种情况,我认为 macdeployqt 中确实存在错误,或者它根本找不到您正在链接的库。就我个人而言,我从未见过 macdeployqt 实际上将任何所需的第 3 方库复制到捆绑包中。
有趣的是macdeployqt永远不会直接使用 .pro 文件。它只是对生成的应用程序包执行一些操作。快速浏览一下文档后,这个Qt 4.7 文档页面显然证明了我的正确性:
注意:如果您希望将第 3 方库包含在应用程序捆绑包中,则必须在创建捆绑包后手动将库复制到捆绑包中。
我认为 4.6 文档中存在错误。对我来说,macdeployqt从未在我的包中放置任何库文件(当然,Qt* 除外)。
我过去确实花了很多时间在这些东西上,最后编写了一个简单的小(Python)脚本,它将所有内容打包到我的包中,根据需要更改库名称,并将所有内容放入带有自动命名的 .dmg 文件中。
可能不是您想听到的,但它确实有效。;)
| 归档时间: |
|
| 查看次数: |
12201 次 |
| 最近记录: |