Я разрабатываю приложение на С++, используя Qt Creator. Когда я смотрю в Finder, я вижу вывод в:
build-XMLMPAM-Desktop_Qt_5_11_2_clang_64bit-Debug
Эта папка содержит объектные файлы "moc" файлы cpp. В Finder вижу приложение:
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: /
Я в замешательстве, что происходит?
Приложение macOS, такое как XMLMPAM.app
, действительно является папкой. В терминах Apple это называется пучок. Это каталог с определенной структурой, которую может распознать ОС и другие утилиты. Фактический исполняемый файл программы находится внутри подпапки Contents/MacOS пакета. Вот где его находит Finder. Finder делает вид, что это связный «файл», но вы также можете войти внутрь пакета, щелкнув правой кнопкой мыши и «Показать содержимое пакета».
Если вы хотите имитировать поведение Finder из терминала, запустите open XMLMPAM.app
или open -a XMLMPAM
.
Если вы хотите получить путь к пакету или любому файлу внутри него, вы можете использовать методы класса Класс NSBundle. Например: NSBundle.mainBundle.executableURL.path
должен дать вам полный путь к исполняемому файлу вашего приложения.