macOS 差异在“访达”和“终端”中运行应用程序
macOS differences running application in Finder and Terminal?
我正在使用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
从"访达"启动时:
CWD: /
我对此感到困惑,这是怎么回事?
像XMLMPAM.app
这样的macOS应用程序确实是一个文件夹。在苹果术语中,它被称为捆绑包。它是一个具有操作系统和其他实用程序可以识别的特定结构的目录。实际的可执行程序文件位于捆绑包的"内容/MacOS"子文件夹中。这就是Finder找到它的地方。Finder假装它是一个有凝聚力的"文件",但您也可以通过右键单击和"显示包内容"进入捆绑包。
如果要从终端模拟 Finder 行为,请运行 open XMLMPAM.app
或 open -a XMLMPAM
。
如果要获取捆绑包的路径或其中的任何文件,可以使用 NSBundle 类的方法。例如:NSBundle.mainBundle.executableURL.path
应提供应用可执行文件的完整路径。
相关文章:
- 试图在visual studio上用C++创建一个桌面应用程序
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 如何在应用程序进行大量printf时,在固定输入的终端中设置最后一行
- 在Qt小部件应用程序中显示cmd终端
- 如何在不将其连接到终端的情况下运行'screen',以便我可以在C++ (qt) 应用程序中捕获输出?
- macOS 差异在“访达”和“终端”中运行应用程序
- 在Linux终端上使用C 编制示例OpenGL应用程序
- 如何将命令从c++应用程序返回到父终端
- 如何从终端为本机应用程序创建android项目
- SQLite - 如何在终端级别使用它C++应用程序?
- 如何在Qt应用程序中通过终端命令运行分离的应用程序
- 如何在Linux应用程序上使用C++中的终端输入中断循环/进程
- VeriFone终端应用程序可以通过以太网进行通信,还可以存储本地数据
- 在终端服务服务器会话中存储用户的应用程序首选项。托管C++
- 我可以制作一个无法打开终端窗口的 OS X Glut 应用程序吗?
- 如何运行GTKMM应用程序,它不会阻塞我的主终端,并允许多任务
- Qt应用程序是否需要终端用户提供额外的库?比如c#和.net框架
- c++终端应用程序并行输入和输出
- 如何从终端启动C应用程序,并将参数传递给int main(int argc,char*argv[])
- 有没有关于用c++编写控制台/终端应用程序的书?