Редактировать: используя Qt 5.9.1, установленный с помощью Homebrew
После комментария к этому другому вопросу мы пытаемся использовать macdeployqt
для подготовки дистрибутива пакета OSX на основе Qt. заявление.
Этот инструмент правильно копирует все зависимости Qt (и даже некоторые библиотеки, отличные от Qt) внутри пакета. Он также изменяет имена зависимых библиотек как внутри самого приложения, так и в скопированных библиотеках.
Он также успешно копирует QtWebEngineProcess.app, содержащийся в папке Helpers файла QtWebEngineCore.framework.
Проблема
Проблема в том, что он не меняет имена зависимых библиотек внутри QtWebEngineProcess, поэтому пакет нельзя перемещать (поскольку QtWebEngineProcess ссылается на свою зависимую библиотеку абсолютными путями, допустимыми только на машине разработки). При попытке запустить приложение на «клиентской» машине можно получить ошибку:
dyld: библиотека не загружена: /usr/local/Cellar/qt/5.9.1/lib/QtWebEngineCore.framework/Versions/5/QtWebEngineCore Ссылка из: Business.app/Contents/Frameworks/QtWebEngineCore.framework/Helpers/QtWebEngineProcess.app /Содержание/MacOS/QtWebEngineProcess
Мы попытались исправить это приложение вручную, отредактировав QtWebEngineProcess, заменив абсолютную часть пути к библиотекам Qt на @loader_path/../../../../../../../../Frameworks/
.
Это только продвигает проблему вперед: теперь QtWebEngineProcess, кажется, правильно загружает свои зависимые библиотеки, но сами зависимые библиотеки больше не могут загружать свои зависимые библиотеки, так как их имя установки начинается с @executable_path, а исполняемый файл QtWebEngineProcess находится в папке, отличной от исполняемого файла Business. Отсюда ошибка:
dyld: библиотека не загружена: @executable_path/../Frameworks/QtQuick.framework/Versions/5/QtQuick
Ссылка из: Business.app/Contents/Frameworks/QtWebEngineCore.framework/Versions/5/QtWebEngineCore
Не работает ли macdeployqt, когда речь идет о приложении, использующем веб-движок Qt?
Есть ли способ заставить его работать без повторного изменения всех имен установки Qt в комплекте вручную?
QtWebEngine
, я сначала запускаюmacdeployqt
, а затем запускаюinstall_name_tool
с параметром-add rpath @executable_path/../Frameworks <absolute path to app install dir>/MyApp.app/Contents/MacOS/MyApp
, гдеMyApp.app
— это имя пакета приложения, аMyApp
— это имя двоичного файла приложения. - person Dmitry   schedule 26.09.2017@executable_path
, а не с@rpath
(это делается с помощьюmacdeployqt
). Поэтому я думаю, что заполнение rpath приложения не должно иметь значения. - person Ad N   schedule 26.09.2017