macdeployqt на доморощенных установленных фреймворках - PullRequest
6 голосов
/ 10 февраля 2011

Я пытаюсь развернуть приложение, используя macdeployqt. Все фреймворки Qt правильно копируются в комплект приложений. Проблема, с которой я сталкиваюсь, заключается в том, что macdeployqt не имеет разрешений на запись в скопированных средах, которые изначально находятся в / usr / local / lib. Это потому, что я установил qt с помощью homebrew, который, кажется, заставляет устанавливать все только для чтения. Мой вопрос заключается в том, есть ли лучший способ исправить эту проблему, чем вручную изменять все разрешения библиотек qt внутри / usr / local / lib, чтобы я мог использовать macdeployqt из проекта qt .pro. (Я не хочу использовать macdeployqt вручную с sudo или чем-то подобным)

Причина, по которой я спрашиваю, состоит в том, что я использую в проекте много сторонних библиотек (они нормально копируются и т. Д.), Которые мне нужно часто обновлять с помощью homebrew и, таким образом, приходится возвращать измененные разрешения на них.

Заранее спасибо!

1 Ответ

1 голос
/ 18 сентября 2014

На всякий случай, если кто-то найдет этот старый пост в поисках информации о macdeployqt:

Используйте скрипт, чтобы выполнить macdeployqt вместо того, чтобы писать скрипты для команд macdeployqt в вашем .pro-файле. Это позволит вам изменять права доступа к файлам на лету.

Вот [фрагмент] скрипта, который я использую для одного из моих приложений:

https://bugreports.qt -project.org / просмотр / QTBUG-23268

Если вы работаете в Windows и у вас нет bash, вы можете использовать perl или python. Сценарий, упомянутый выше, изменяет файлы на лету, чтобы обойти ошибку - вы можете поместить сюда все, что захотите, включая изменение прав доступа к файлам.

Использование сценария также означает, что у вас есть возможность позже добавлять команды для подписи кода, упаковки или всего, что вам нужно.

"Язык сценариев" Qt .pro на самом деле генерирует команды Makefile под капотом и может быть довольно неясным, если вы хотите выполнить задачи развертывания, которые относятся к путям и наборам файлов.

Также вам необходимо создать дополнительную цель или включить ее в свою цель сборки - в любом случае процесс сборки становится более сложным и более подверженным ошибкам.

Отказ от ответственности: я работал над Qt в течение 8 лет в качестве старшего инженера для Nokia / Trolltech, а также опубликовал коммерческое кроссплатформенное приложение с использованием Qt.

...