我正在使用 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: /
我对此感到困惑,这是怎么回事?
最佳答案
像 XMLMPAM.app
这样的 macOS 应用确实是一个文件夹。在 Apple 术语中,它称为 bundle。它是操作系统和其他实用程序可以识别的具有特定结构的目录。实际的可执行程序文件位于 bundle 的 Contents/MacOS 子文件夹中。这就是 Finder 所在的位置。 Finder 假装它是一个有凝聚力的"file",但您也可以通过右键单击和“显示包内容”进入包内。
如果您想从终端模拟 Finder 行为,请运行 open XMLMPAM.app
或 open -a XMLMPAM
。
如果你想获取包的路径,或者其中的任何文件,你可以使用 NSBundle class 的方法.例如:NSBundle.mainBundle.executableURL.path
应该为您提供应用的可执行文件的完整路径。
关于c++ - 在 Finder 和终端中运行应用程序的 macOS 差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55599363/