【问题标题】:macOS differences running application in Finder and Terminal?在 Finder 和终端中运行应用程序的 macOS 差异?
【发布时间】:2019-04-09 18:45:58
【问题描述】:

我正在使用 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:  /

我对此感到困惑,这是怎么回事?

【问题讨论】:

    标签: c++ macos terminal


    【解决方案1】:

    XMLMPAM.app 这样的macOS 应用程序确实是一个文件夹。在 Apple 术语中,它被称为 bundle。它是操作系统和其他实用程序可以识别的具有特定结构的目录。实际的可执行程序文件位于包的 Contents/MacOS 子文件夹中。那是Finder找到它的地方。 Finder 假装它是一个有凝聚力的“文件”,但您也可以通过右键单击和“显示包内容”进入捆绑包。

    如果您想从终端模拟 Finder 行为,请运行 open XMLMPAM.appopen -a XMLMPAM

    如果您想获取包的路径,或者其中的任何文件,您可以使用NSBundle class 的方法。例如:NSBundle.mainBundle.executableURL.path 应该为您提供应用可执行文件的完整路径。

    【讨论】:

      猜你喜欢
      • 2012-02-13
      • 1970-01-01
      • 2020-08-23
      • 1970-01-01
      • 1970-01-01
      • 2021-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多