昨天我阅读了很多关于部署 MacOSX 应用程序的内容,但我仍然有一些疑问。在过去的几年里,我一直在使用macdeployqt为 MacOSX 部署 Qt4 应用程序。现在,mi 应用程序使用了一个不属于 Qt 框架的库:Poppler。
我已经使用Homebrew安装了 poppler-qt4 :
brew install poppler --with-qt4 --enable-xpdf-headers
使用macdeployqt后,我知道我必须使用install_name_tool通过相对路径更改绝对路径。一些 dylibs 也有依赖关系:
MyApp.app/Contents/MacOS/MyApp: /usr/local/lib/libpoppler-qt4.4.dylib /usr/local/lib/libpoppler-qt4.4.dylib: /usr/local/Cellar/poppler/0.20.5/lib/libpoppler.28.dylib /usr/local/lib/libfontconfig.1.dylib /usr/local/lib/QtCore.framework/Versions/4/QtCore /usr/local/lib/QtGui.framework/Versions/4/QtGui /usr/local/lib/QtXml.framework/Versions/4/QtXml
使用macdeployqt后,我知道 Qt 框架已被复制到应用程序包中,如何使用install_name_tool更改/usr/local/lib/QtCore.framework/Versions/4/QtCore的相对路径?
是否使用 -headerpad_max_install_names 编译自制dylib?
是否有使用 brew 自动执行此操作的方法?
我应该使用install_name_tool什么?@executable_path 还是 @loader_path?
编辑:似乎 macdeployqt 足够聪明,可以部署第三方 dylib、poppler-qt4 及其所有依赖项都复制到 Applicaciont.app/Frameworks 文件夹,并自动使用 install_name_tool。但是,现在我遇到了这个BUG:macdeployqt not copying plugins我想问题是poppler-qt4.4名称上的“qt”。