Редактировать: используя Qt 5.9.1, установленную с Homebrew
После комментария в этом другой вопрос, мы пытаемся использовать macdeployqt
подготовить распространение пакета OSX приложения на основе Qt.
Этот инструмент корректно копирует все зависимости Qt (и даже некоторые не-библиотеки Qt) внутри пакета. Он также изменяет имена зависимых библиотек как внутри самого приложения, так и в скопированных библиотеках.
Он также успешно копирует QtWebEngineProcess.app содержится в Помощники папка из 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/Contents/MacOS/QtWebEngineProcess
Мы попытались вручную исправить это приложение, отредактировав QtWebEngineProcess, чтобы заменить абсолютную часть пути к библиотекам Qt на @loader_path/../../../../../../../../Frameworks/
,
Это только продвигает проблему вперед: сейчас QtWebEngineProcess кажется, правильно загружает свои зависимые библиотеки, но сами зависимые библиотеки больше не могут загружать свои зависимые библиотеки, так как их имя установки начинается с @executable_path, а также QtWebEngineProcess исполняемый файл живет в другой папке Бизнес исполняемый файл. Отсюда и ошибка:
dyld: библиотека не загружена:
@executable_path /../ Каркасы / QtQuick.framework / Версии / 5 / QtQuick
Ссылка от: Business.app/Contents/Frameworks/QtWebEngineCore.framework/Versions/5/QtWebEngineCore
Является macdeployqt не работает, когда дело доходит до приложения, использующего веб-движок Qt?
Есть ли способ заставить его работать, не изменяя вручную все имена установки Qt в комплекте?
До сих пор macdeployqt
у меня отлично работает на локальной машине.
На CI вы можете столкнуться с проблемой, что артефакты разбиты таким образом.
Это происходит, если вы копируете свою заявку с cp -r
или же zip
это без -y
После этого все символические ссылки будут разрешены внутри приложения, и это не будет работать, потому что будет много копий QtWebEngineProcess
, Также он сломает вашу подпись, если вы подпишете приложение.
Решение заключается в использовании cp -a
а также zip -r -y
вместо этого — последний работал для меня вместо использования плагина для артефактов.
После одного из комментариев Дмитрия к исходному вопросу я наконец-то нашел время для тестирования с официальным дистрибутивом Qt 5.9.1 для OS X, и оказалось, что он был прав. macdeployqt
распространяется с официальными двоичными файлами Qt, обрабатывает QtWebEngineProcess.app просто отлично.
Версия этой утилиты распространяется с homebrew
установка Qt является фиктивной, по крайней мере, в 5.9.1