我正在尝试为 Mac OSX 创建一个应用程序包。我正在使用使用自己的自定义插件的第 3 方库(Marble,KDE 的一部分,但仅为 Qt 构建),我不知道如何处理。这是我所做的:
- 编译我的包
- 使用 macdeployqt 将 Qt 库复制到包并告诉二进制文件使用这些库库(这似乎将 Marble 库 libmarblewidget.dylib 复制到应用程序包,并修复其库依赖项)
- 将 Marble 插件复制到 bundle.app/Contents/PlugIns/marble(其中 bundle.app 是我的包),并使用 install_name_tool 将它们链接到包中的 Qt 和 Marble 库。
但是,我的应用程序不会运行。我已经使用 DYLD_PRINT_LIBRARIES=1 运行它以查看正在加载的内容,在加载来自 /Applications/Marble.app/Contents/MacOS/resources/plugins/ 的插件而不是从我的包中的 PlugIns 目录加载之前,一切看起来都很好. 此时,插件尝试加载 /Developer Qt 库而不是捆绑包副本(以及我在 /usr/local/lib 中获得的 libmarblewidget.dylib 的副本),这一切都崩溃了。
我可能误解了这个问题,但在我看来,问题在于第 3 方库 (libmarblewidget.dylib) 加载了 Marble 应用程序捆绑插件,然后一切都搞砸了。假设我是对的,有没有办法告诉这个库使用我的应用程序包中的 PlugIns 目录?我需要重新编译它吗?