Я пытаюсь развернуть приложение Qt, который использует помощника, чтобы показать помощь, на макинтош (OS X 10.6-10.9, Qt 4,8)Как развернуть помощник с моим приложением на Mac без развертывания нескольких копий Qt Frameworks?
QStringList args = "-collectionFile " + "my_help_file";
QString app = "path/"+"Assistant.app";
m_helpProcess->start(app, args);
Я поместил Assistant.app в папке ресурсов.
Поскольку я развернуть приложение на систему без Qt установлен, я поместил все, что он зависимости QT в содержании/рамочных, и побежал 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
приложение получает его, он является функциональным, но помощник Безразлично Очевидно, это другой уровень.
Я не хочу, чтобы разместить несколько копий базы ... кроме того, я уверен, что конфликты будут, если я делаю ...
Вызов помощника без его связка не работает ... (Я хотел бы, чтобы поместить исполняемый файл рядом с ххм исполняемым)
так как я предполагаю, что я установить идентификатор для Каркасов в один каталог вниз от @executable_path, я не могу сказать, помощи, чтобы посмотреть в другом месте ...
Как правильно связать помощника с Framework?
Примечание: Я пробовал:
# 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
Не нашли библиотеки ... Я предполагаю, что идентификатор должен соответствовать пути ... но для одного экземпляра Lib, он просто не может ...
Я также попытался сделать символическую ссылку (псевдоним?) В библиотеке Qt в том месте, где будет выглядеть помощник ... Он пытался и не смог, жалуясь на искаженный файл.
Update, чтобы ответить на комментарий:
Запуск otool -L на помощнике в помощнике узелка в папке Resources:
@executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore
и помощник не может найти библиотеку, которая на самом деле является на
@executable_path/../../../Frameworks/QtCore.framework/Versions/4/QtCore
Идентификатор рамки используется только во время соединения. Динамическому загрузчику все равно, что он находится во время загрузки. Ваш второй набор команд 'install_name_tool' должен был работать. Вы связались с '-headerpad_max_install_names'? Если нет, возможно, недостаточно места для хранения нового пути в командах загрузчика. Что делает «otool -L» применительно к исполняемому файлу из списка Assistant.app после второго набора команд? –
@KenThomases Извините за поздний ответ, только сейчас я попытался изменить его, потому что есть причина, по которой мне нужен помощник, который будет известен как приложение ... поэтому я обновил вопрос с ответом на ваш вопрос. Я не знаю, где бы я установил ссылку «-headerpad_max_install_names», является ли опция qmake? – Thalia
Если «- headerpad_max_install_names» является параметром qmake, то я не могу его использовать, так как я не создаю приложение Assistant, оно поставляется с Qt ... – Thalia