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

How to hide terminal window in mac osx?

本文关键字:隐藏 终端 窗口 osx mac      更新时间:2023-10-16

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

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

-Wl,--subsystem,windows

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

这个问题类似于如何隐藏控制台窗口在Mac OS (gcc编译器)?

谢谢。

根据您的描述,您正在构建unix风格的可执行文件。在OS X上,这些程序总是在终端窗口内启动。你在OS X上的选择是:

  • 像上面链接的文章
  • 中描述的那样作为守护进程运行
  • 作为unix可执行文件在终端中运行
  • 创建一个最小的OS X应用程序包装器并作为OS X应用程序运行

在大多数情况下,你可以为unix风格的可执行文件创建一个包装器,通过使用苹果的Bundle Programming Guide(跳过iOS的东西,看看Mac的Bundle信息)中的说明来创建适当的Bundle

基本目录结构为:

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

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

  • CFBundleIdentifier -你的应用程序的id在反向dns符号(com.mycompany.myapp)
  • CFBundleDisplayName -你的应用程序的名称在人类可读的形式(MyApp)
  • CFBundleName -应用程序的短名称(通常与您的应用程序和可执行文件名相同)
  • CFBundleVersion -你的版本#在X.Y[。Z]形式
  • CFBundlePackageType -包类型,对于应用程序应该是APPL
  • CFBundleExecutable -可执行文件的名称
  • CFBundleSignature -老派Apple签名(理论上应该在Apple注册的4个字符代码)

一个最小的列表应该是这样的:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CFBundleDisplayName</key>
    <string>MyApp</string>
    <key>CFBundleExecutable</key>
    <string>a.out</string>
    <key>CFBundleIdentifier</key>
    <string>com.mycompany.myapp</string>
    <key>CFBundleName</key>
    <string>MyApp</string>
    <key>CFBundlePackageType</key>
    <string>APPL</string>
    <key>CFBundleSignature</key>
    <string>FOOZ</string>
    <key>CFBundleVersion</key>
    <string>1.0</string>
</dict>
</plist>

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

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