Библиотеки Qt отсутствуют в macOS - PullRequest
1 голос
/ 02 марта 2020

Я занимаюсь разработкой проекта Qt на C ++. Однако на Ma c его невозможно запустить, потому что он не может найти никаких библиотек.

Я следовал инструкциям на сайте Qt, в моем домашнем каталоге появился файл Qt.

drwxr-xr-x  14 Toan  staff     448  2 mar 20:25 .
drwxr-xr-x+ 52 Toan  staff    1664  2 mar 20:21 ..
-rw-r--r--@  1 Toan  staff    8196  2 mar 21:23 .DS_Store
-rw-r--r--   1 Toan  staff  195548 16 fév 23:22 InstallationLog.txt
drwxr-xr-x   5 Toan  staff     160 16 fév 23:13 Licenses
drwxrwxrwx   3 Toan  staff      96 16 fév 23:13 MaintenanceTool.app
-rw-r--r--   1 Toan  staff  276471 16 fév 23:13 MaintenanceTool.dat
-rw-r--r--   1 Toan  staff    6274 16 fév 23:13 MaintenanceTool.ini
drwxr-xr-x   3 Toan  staff      96 16 fév 23:13 Qt Creator.app
-rw-r--r--   1 Toan  staff    2794 16 fév 23:13 components.xml
drwxr-xr-x   3 Toan  staff      96 16 fév 23:13 dist
drwxrwxrwx   7 Toan  staff     224  2 mar 21:23 installerResources
-rw-r--r--   1 Toan  staff     362 16 fév 23:13 network.xml
-rw-r--r--   1 Toan  staff  151525  5 fév 11:55 update.rcc

1 Ответ

0 голосов
/ 03 марта 2020

Когда вы создаете свой проект, создается так называемый «пакет приложений». Это каталог с расширением .app. Вот что на самом деле представляют приложения MacOS; каталоги с расширением ".app". По умолчанию искатель macOS не показывает расширение «.app». Например, приложение Safari просто отображается как «Safari», а не как «Safari.app».

Если ваш проект называется «MyApp», пакет приложений будет иметь имя «MyApp.app». Чтобы это можно было использовать на других машинах, вам нужно использовать инструмент «macdeployqt». Это скопирует все необходимые библиотеки Qt в комплект приложения. Вы используете macdeployqt из терминала.

Откройте терминал и cd в каталог сборки вашего проекта. Там вы найдете комплект приложений вашего приложения (MyApp.app в этом примере.) Запустите macdeployqt следующим образом:

~/Qt/5.14.1/clang/bin/macdeployqt MyApp.app

Не забудьте использовать инструмент macdeployqt, который поставляется с версией Qt, которую вы создали. ваш проект с. В этом случае 5.14.1. Предполагается, что вы установили Qt в папку по умолчанию, которая является папкой «Qt» в вашем домашнем каталоге.

Теперь приложение должно быть готово для запуска в любой системе MacOS. Чтобы облегчить его распространение, вы можете сделать из него zip-архив с помощью утилиты "ditto". Этот инструмент является частью macOS:

ditto -v -c -k --sequesterRsrc --keepParent --zlibCompressionLevel 9 MyApp.app MyApp.zip

Это создаст MyApp.zip, который вы затем сможете распространять.

Делать это вручную каждый раз, однако, это немного раздражает. Что я делаю, так это создаю собственную цель make в моем файле проекта, которая делает это для меня. Это предполагает, что вы используете qmake для своего проекта. Добавьте это к вашему .pro-файлу:

macx {
    macdist.target = macdist
    macdist.commands = \
        rm -rf "$${TARGET}.app" \
        && rm -f "$${TARGET}.zip" \
        && "$$QMAKE_QMAKE" -config release "$$_PRO_FILE_" \
        && make clean \
        && make -j$$QMAKE_HOST.cpu_count \
        && "$$dirname(QMAKE_QMAKE)/macdeployqt" "$${TARGET}.app" \
        && ditto -v -c -k --sequesterRsrc --keepParent --zlibCompressionLevel 9 "$${TARGET}.app" "$${TARGET}.zip"

    QMAKE_EXTRA_TARGETS += macdist
}

Теперь все, что вам нужно сделать, это запустить qmake как обычно (в Creator выберите «Build-> Run qmake» в меню), а затем в терминале go в каталог сборки и просто выполните:

make macdist

Это сделает сборку fre sh release, запустите на ней macdeployqt и упакуйте ее в zip-архив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...