Как копировать / обновлять ресурсы, фреймворки или плагины в (Mac OS X) «пакет приложений» с помощью Qt Creator или qmake - PullRequest
6 голосов
/ 03 октября 2011

Я пару дней читал о том, как копировать / обновлять внешние ресурсы, плагины или фреймворки в Mac Mac из моего приложения, используя Qt creator или qmake.

Сейчас я нашел два основных решения.Одним из них является использование qmake вместе с некоторыми командами в файле .pro.Другой - сделать скрипт «Custom Deployment Step».

Я надеялся использовать второй вариант, потому что у меня уже был маленький скрипт make, который делал то, что я хотел.Проблема в том, что Qt Creator предлагает так мало переменных для работы, что скрипт потерял свою полезность.Например, мой сценарий использует «Путь к целевому приложению» в качестве параметра, чтобы он мог выполнять всю свою работу оттуда.Но, пожалуйста, поправьте меня, если я ошибаюсь, Qt Creator предлагает только переменные% {buildDir} и% {sourceDir} ...

Другой вариант - использование qmake.Это то, что я до сих пор пробовал в своем файле ".pro":

1) Используя команду INSTALL .Я провел небольшой тест, в котором я попытался скопировать некоторые файлы следующим образом:

MediaFiles.path = test/media
MediaFiles.files = media/*
INSTALL += MediaFiles

И в основном ничего не произошло.Я прыгал, чтобы найти ту же папку «media» в папке «test», но ничего.Не знаю, делаю ли я что-то не так.

Обратите внимание, что папка «media» находится рядом с папкой «test» и файлом «.pro».(Все они имеют одинаковую иерархическую позицию.)

2) Затем я попытался QMAKE_BUNDLE_DATA :

MediaFiles.path = Contents/MacOS
MediaFiles.files = media/*
QMAKE_BUNDLE_DATA += MediaFiles

Но это дало мне следующую ошибку:

usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file target_file
cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file ... target_directory
make: *** [PathToApp] Error 64

Пока что ни одно из решений не выглядит приятным.Если я хочу сделать хороший скрипт для создания, мне нужно будет жестко закодировать каждый целевой путь отдельно.В моем случае у меня есть 8 различных целевых путей в зависимости от некоторых переменных «CONFIG».

Я уверен, что решение qmake является официальным способом сделать это.Если кто-то может подсказать мне, решение проблемы 64 было бы круто.

Еще один вопрос: нужно ли делать qmake каждый раз, когда я хочу обновить свой пакет?Могу ли я выполнить свой скрипт make с помощью qmake?

1 Ответ

8 голосов
/ 04 октября 2011

QMAKE_BUNDLE_DATA начал работать без сбоев после помещения команды в конец сценария .pro.

mac{
    MediaFiles.files = media
    MediaFiles.path = Contents/MacOS
    QMAKE_BUNDLE_DATA += MediaFiles
}
...