Проверьте, работает ли программа на C ++ как пакет приложений или командная строка на Mac - PullRequest
0 голосов
/ 21 сентября 2019

Есть ли способ для программы на C ++ или Objective-C определить, запускается ли она как приложение командной строки (например, с ./myprog в оболочке) или как пакет приложений (например, двойным щелчком по.app в Finder или open myprog.app/ в терминале)?

В настоящее время я использую следующее.

CFBundleRef bundle = CFBundleGetMainBundle();
CFURLRef bundleUrl = CFBundleCopyBundleURL(bundle);
char bundleBuf[PATH_MAX];
CFURLGetFileSystemRepresentation(bundleUrl, TRUE, (UInt8*) bundleBuf, sizeof(bundleBuf));

На данный момент bundleBuf теперь содержит путь к.app bundle или каталог, содержащий исполняемый файл командной строки.Я могу проверить, заканчивается ли строка ".app", но это хакерство.Есть ли лучший способ сделать это?

...