我有一个可在Windows,Linux,Android和Mac上运行的多平台应用程序。它是在所有平台上用g ++编译的。
对于Windows,我创建了一个安装程序,并通过添加链接器标志来删除终端窗口:
-Wl,--subsystem,windows
我在Mac上寻找类似的选项。当我从GUI打开可执行文件时如何摆脱控制台窗口?
此问题类似于How to hide console window in Mac OS (gcc compiler)?,但我的应用程序不是守护程序。
感谢。
答案 0 :(得分:12)
根据您的描述,您构建的是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
)
如果您不关心图标,可以省略图标资源,并使用默认的应用程序图标。