macOS отличия запуска приложений в Finder и Terminal? - PullRequest
0 голосов
/ 09 апреля 2019

Я занимаюсь разработкой приложения на C ++ с использованием Qt Creator. Когда я смотрю в Finder, я вижу вывод в:

    build-XMLMPAM-Desktop_Qt_5_11_2_clang_64bit-Debug

Эта папка содержит объектные файлы "moc" cpp файлы. В искателе вижу приложение:

    XMLMPAM.app

Хотя я могу запустить это из Finder, когда я открываю терминал, на самом деле это папка. Содержит файлы и подпапки.

Для запуска приложения из терминала необходимо ввести:

    ~/build-XMLMPAM-Desktop_Qt_5_11_2_clang_64bit-Debug/XMLMPAM.app/Contents/MacOS/XMLMPAM

Из приложения я сообщаю CWD:

При запуске из терминала или отладчика Qt Creator:

    CWD:  /Users/Simon/build-XMLMPAM-Desktop_Qt_5_11_2_clang_64bit-Debug/XMLMPAM.app/Contents/MacOS

При запуске из Finder:

    CWD:  /

Я смущен этим, что происходит?

1 Ответ

4 голосов
/ 09 апреля 2019

Приложение macOS, например XMLMPAM.app, действительно является папкой. В терминах Apple это называется связка . Это каталог с определенной структурой, которую ОС и другие утилиты могут распознать. Фактический исполняемый файл программы находится внутри подпапки Contents / MacOS пакета. Вот где его находит Finder. Finder делает вид, что это сплоченный «файл», но вы также можете войти внутрь пакета, щелкнув правой кнопкой мыши и «Показать содержимое пакета».

Если вы хотите смоделировать поведение Finder с терминала, запустите open XMLMPAM.app или open -a XMLMPAM.

Если вы хотите получить путь к пакету или к любому файлу внутри него, вы можете использовать методы NSBundle class . Например: NSBundle.mainBundle.executableURL.path должен дать вам полный путь к исполняемому файлу вашего приложения.

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