我正在尝试在 mac(OS X 10.6-10.9,Qt 4.8)上部署一个使用 Assistant 来显示帮助的 Qt 应用程序
QStringList args = "-collectionFile " + "my_help_file";
QString app = "path/"+"Assistant.app";
m_helpProcess->start(app, args);
我将 Assistant.app 放在 Resources 文件夹中。
由于我在未安装 qt 的系统上部署应用程序,因此我将所有 QT 依赖项放在 Contents/Frameworks 中,然后运行 install_name_tool
# for QtCore:
install_name_tool -id @executable_path/../Frameworks/QtCore.framework/Version/QtCore.framework/Versions/4/QtCore xxx.app/Contents/Frameworks/QtCore.framework/Versions/4/QtCore
install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore xxx.app/Contents/MacOs/xxx
install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore xxx.app/Contents/Resources/Assistant.app/Contents/MacOS/Assistant
该应用程序得到它,它是功能性的,但助手没有......显然它是一个不同的级别。
我不想放置框架的多个副本......此外,我确信如果我这样做会有冲突......
没有捆绑包的呼叫助手不起作用......(我希望将可执行文件放在 xxx 可执行文件旁边)
因为我想我将框架的 id 设置为从@executable_path 向下的一个目录,所以我无法告诉帮助寻找其他地方......
如何将助手与框架正确链接?
注意:我尝试过:
# for QtCore:
install_name_tool -id @executable_path/../Frameworks/QtCore.framework/Version/QtCore.framework/Versions/4/QtCore xxx.app/Contents/Frameworks/QtCore.framework/Versions/4/QtCore
install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore xxx.app/Contents/MacOs/xxx
install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../../../Frameworks/QtCore.framework/Versions/4/QtCore xxx.app/Contents/Resources/Assistant.app/Contents/MacOS/Assistant
没有找到库...我猜 id 必须与路径匹配...但是对于 lib 的单个实例,它不能...
我还尝试在助手将查看的位置创建到 Qt 库的符号链接(别名?)......它尝试过但失败了,抱怨文件格式错误。
更新以回答评论:
在资源文件夹中的助手包中的助手上运行 otool -L:
@executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore
助理找不到真正所在的图书馆
@executable_path/../../../Frameworks/QtCore.framework/Versions/4/QtCore