我正在使用Qt Creator开发C ++应用程序。当我在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: /
我对此感到困惑,这是怎么回事?
答案 0 :(得分:4)
像XMLMPAM.app
这样的macOS应用程序确实是一个文件夹。在Apple术语中,它称为 bundle 。这是具有操作系统和其他实用程序可以识别的特定结构的目录。实际的可执行程序文件位于捆绑软件的Contents / MacOS子文件夹内。那是Finder定位它的地方。 Finder假装它是一个内聚的“文件”,但是您也可以通过右键单击“显示包内容”进入捆绑软件。
如果要从终端模拟Finder行为,请运行open XMLMPAM.app
或open -a XMLMPAM
。
如果要获取包的路径或其中的任何文件,可以使用NSBundle class的方法。例如:NSBundle.mainBundle.executableURL.path
应该为您提供应用程序可执行文件的完整路径。