如何让 Mac 在 Program.App/Contents/Plugins 目录中查找插件?
Posted
技术标签:
【中文标题】如何让 Mac 在 Program.App/Contents/Plugins 目录中查找插件?【英文标题】:How do I get Mac to look for plugins in the Program.App/Contents/Plugins directory? 【发布时间】:2014-12-12 20:41:47 【问题描述】:我有一个链接到libqjpeg.dylib
的Qt 应用程序。在开发机器上,库位于/Applications/Qt/Desktop/Qt/4.8.0/gcc/plugins/imageformats
。我将库放在目标机器上的Program.App/Contents/Plugins
目录中。
但是,当我通过 strace(Mac 上的 dtruss)运行它时,我可以看到应用程序只有统计信息
/Applications/Qt/Desktop/Qt/4.8.0/gcc/plugins/imageformats/libqjpeg.dylib
/Users/USER/lib/libqjpeg.dylib
/usr/local/lib/libqjpeg.dylib
/usr/lib/libqjpeg.dylib
如何让它在Program.App/Contents/Plugins
目录中寻找插件?
【问题讨论】:
【参考方案1】:首先,我认为将dylibs放在Contents/Frameworks而不是Contents/Plugins中更标准。
其次,dylib的安装路径记录在dylib本身中。您可以使用install_name_tool
命令更改该路径,如下所示:
install_name_tool -id @loader_path/../Frameworks/libqjpeg.dylib libqjpeg.dylib
然后将您的应用与修改后的 libqjpeg.dylib 副本相关联。
【讨论】:
感谢这个难题:唯一的问题是,在开发机器上,库将位于前面提到的路径中。有没有办法让它同时检查? 我认为你可以使用@rpath 做到这一点。有关说明,请参阅 this blog post。以上是关于如何让 Mac 在 Program.App/Contents/Plugins 目录中查找插件?的主要内容,如果未能解决你的问题,请参考以下文章