如何在mac osx中隐藏终端窗口?

时间:2014-05-26 02:26:31

标签: c++ macos

我有一个可在Windows,Linux,Android和Mac上运行的多平台应用程序。它是在所有平台上用g ++编译的。

对于Windows,我创建了一个安装程序,并通过添加链接器标志来删除终端窗口:

-Wl,--subsystem,windows

我在Mac上寻找类似的选项。当我从GUI打开可执行文件时如何摆脱控制台窗口?

此问题类似于How to hide console window in Mac OS (gcc compiler)?,但我的应用程序不是守护程序。

感谢。

1 个答案:

答案 0 :(得分:12)

根据您的描述,您构建的是unix样式的可执行文件。在OS X上,这些将始终在终端窗口内启动。您在OS X上的选择是:

  • 按照上面链接的帖子
  • 中的说明运行守护程序
  • 在终端中作为unix可执行文件运行
  • 创建一个最小的OS X应用程序包装器并作为OS X应用程序运行

在大多数情况下,您可以通过使用Apple's Bundle Programming Guide中的说明创建相应的 Bundle 来为unix样式的可执行文件创建包装器(跳过iOS的东西并查看Mac)捆绑信息)。

基本目录结构是:

MyApp.app/
  Contents/
    Info.plist
  MacOS/
    executable
  Resources/
    MyApp.icns

您未经修改的可执行文件可以放在MacOS目录中,您需要使用plist编辑工具或编辑器在Info.plist中设置以下键:

  • CFBundleIdentifier - 您的应用程序的ID为reverse-dns表示法(com.mycompany.myapp
  • CFBundleDisplayName - 以人类可读的形式提供的应用名称(MyApp
  • CFBundleName - 应用的简称(通常与您的应用和可执行文件名相同)
  • CFBundleVersion - 您在X.Y [.Z]表单中的版本号
  • CFBundlePackageType - 包类型,应用程序应为APPL
  • CFBundleExecutable - 您的可执行文件的名称
  • CFBundleSignature - 老派Apple签名(理论上应该在苹果注册的4个字符代码)

最小的plist看起来像这样:                             CFBundleDisplayName         MyApp的         CFBundleExecutable         的a.out         CFBundleIdentifier         com.mycompany.myapp         CFBundleName         MyApp的         CFBundlePackageType         APPL         CFBundleSignature         福兹         CFBundleVersion         1.0          

(上面的示例使用a.out作为可执行文件,它位于MyApp.app/Contents/MacOS/a.out

如果您不关心图标,可以省略图标资源,并使用默认的应用程序图标。