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

2023-11-26

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

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

-Wl,--subsystem,windows

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

这个问题类似于如何在Mac OS(gcc编译器)中隐藏控制台窗口?,除了我的应用程序不是守护进程。

Thanks.


根据您的描述,您正在构建 UNIX 风格的可执行文件。在 OS X 上,它们总是在终端窗口内启动。您在 OS X 上的选择是:

  • 作为守护进程运行,如上面链接的帖子中所述
  • 在终端中作为 unix 可执行文件运行
  • 创建最小的 OS X 应用程序包装器并作为 OS X 应用程序运行

在大多数情况下,您可以通过创建适当的文件来为 unix 风格的可执行文件创建包装器Bundle使用来自的说明Apple 的捆绑包编程指南(跳过 iOS 内容并查看 Mac 捆绑包信息)。

基本目录结构是:

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

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

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

一个最小的 plist 看起来像这样:

<?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)

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 mac osx 中隐藏终端窗口? 的相关文章

  • 在 C# 中创建具有单独列的分隔文本

    我一直在尝试在 C 中创建一个制表符限制的文本文件 以便数据正确显示在单独的列中 Firstname Lastname Age John Smith 17 James Sawyer 31 我尝试过 t 字符 但我得到的只是 Firstnam
  • 如何使用MemoryCache代替Timer来触发一个方法?

    以下方法通过等待已运行操作的结果来处理并发请求 对数据的请求可能会使用相同 不同的凭据同时出现 对于每组唯一的凭据 最多可以有一个GetCurrentInternal呼叫正在进行中 当准备就绪时 该呼叫的结果将返回给所有排队的服务员 pri
  • 使用 Unity 在构造函数中使用属性依赖注入

    好的 我在基类中定义了一个依赖属性 我尝试在其派生类的构造函数内部使用它 但这不起作用 该属性显示为 null Unity 在使用 container Resolve 解析实例后解析依赖属性 我的另一种选择是将 IUnityContaine
  • 使用Physics.Raycast 和Physics2D.Raycast 检测对象上的点击

    我的场景中有一个空的游戏对象 带有 2D 组件盒碰撞器 我将脚本附加到该游戏对象 void OnMouseDown Debug Log clic 但是当我点击我的游戏对象时 没有任何效果 你有什么想法 如何检测我的盒子碰撞器上的点击 使用光
  • 推导指南中的引用和值之间的差异

    考虑类型A template
  • 生成(非常)大的非重复整数序列而不进行预洗牌

    背景 我编写了一个简单的媒体客户端 服务器 我想生成一个不明显的时间值 随从客户端到服务器的每个命令一起发送 时间戳中将包含相当多的数据 纳秒分辨率 即使它不是真正准确 因为现代操作系统中计时器采样的限制 等 我想做的 在 Linux 上
  • 关于在 Windows 上使用 WiFi Direct Api?

    我目前正在开发一个应用程序 我需要在其中创建链接 阅读 无线网络连接 在桌面应用程序 在 Windows 10 上 和平板电脑 Android 但无关紧要 之间 工作流程 按钮 gt 如果需要提升权限 gt 创建类似托管网络的 WiFi 网
  • 使用 JNI 从 Java 代码中检索 String 值的内存泄漏

    我使用 GetStringUTFChars 从使用 JNI 的 java 代码中检索字符串的值 并使用 ReleaseStringUTFChars 释放该字符串 当代码在 JRE 1 4 上运行时 不会出现内存泄漏 但如果相同的代码在 JR
  • 如何将整数转换为 void 指针?

    在 C 中使用线程时 我面临警告 警告 从不同大小的整数转换为指针 代码如下 include
  • 批量更新 SQL Server C#

    我有一个 270k 行的数据库 带有主键mid和一个名为value 我有一个包含中值和值的文本文件 现在我想更新表格 以便将每个值分配给正确的中间值 我当前的方法是从 C 读取文本文件 并为我读取的每一行更新表中的一行 必须有更快的方法来做
  • 上下文敏感与歧义

    我对上下文敏感性和歧义如何相互影响感到困惑 我认为正确的是 歧义 歧义语法会导致使用左推导或右推导构建多个解析树 所有可能的语法都是二义性的语言是二义性语言 例如 C 是一种不明确的语言 因为 x y 总是可以表示两个不同的事物 如下所述
  • 如何使用 Mongodb C# 驱动程序连接多个集合

    我需要将 3 个集合与多个集合合并在一起 lookup我在 C 驱动程序中尝试过 它允许我 lookup用户采集但无法执行秒 lookup用于设置集合 有人可以帮忙吗 db Transactions aggregate lookup fro
  • HttpWebRequest 在第二次调用时超时

    为什么以下代码在第二次 及后续 运行时超时 代码挂在 using Stream objStream request GetResponse GetResponseStream 然后引发 WebException 表示请求已超时 我已经尝试过
  • 如何对 Web Api 操作进行后调用?

    我创建了一个 Web API 操作 如下所示 HttpPost public void Load string siteName string providerName UserDetails userDetails implementat
  • C++ 密码屏蔽

    我正在编写一个代码来接收密码输入 下面是我的代码 程序运行良好 但问题是除了数字和字母字符之外的其他键也被读取 例如删除 插入等 我知道如何避免它吗 特q string pw char c while c 13 Loop until Ent
  • 有没有办法强制显示工具提示?

    我有一个验证字段的方法 如果无法验证 该字段将被清除并标记为红色 我还希望在框上方弹出一个工具提示 并向用户显示该值无效的消息 有没有办法做到这一点 并且可以控制工具提示显示的时间 我怎样才能让它自己弹出而不是鼠标悬停时弹出 If the
  • memset 未填充数组

    u32 iterations 5 u32 ecx u32 malloc sizeof u32 iterations memset ecx 0xBAADF00D sizeof u32 iterations printf 8X n ecx 0
  • 使用 GhostScript.NET 打印 PDF DPI 打印问题

    我在用GhostScript NET http ghostscriptnet codeplex com打印 PDF 当我以 96DPI 打印时 PDF 打印效果很好 但有点模糊 如果我尝试以 600DPI 打印文档 打印的页面会被极大地放大
  • 检查Windows控制台中是否按下了键[重复]

    这个问题在这里已经有答案了 可能的重复 C 控制台键盘事件 https stackoverflow com questions 2067893 c console keyboard events 我希望 Windows 控制台程序在按下某个
  • 防止在工厂方法之外实例化对象

    假设我有一个带有工厂方法的类 class A public static A newA Some code logging return new A 是否可以使用 a 来阻止此类对象的实例化new 那么工厂方法是创建对象实例的唯一方法吗 当

随机推荐

  • Python:为什么(“hello”是“hello”)评估为True? [复制]

    这个问题在这里已经有答案了 为什么 hello is hello 生产True在Python中 我读了以下内容here 如果两个字符串文字相等 则它们已被置于相同的位置 内存位置 字符串是一个不可变的实体 没有伤害可以 做完了 那么每个 P
  • 添加列之前如何检查列是否存在

    我有一个数据库 如果它不存在 我想向其中添加一列 如何使用 sqlite swift API 做到这一点 通常 如果要向现有表添加新列 您将需要一个迁移路径 您可以使用userVersion管理数据库架构版本的属性 if db userVe
  • 一个用于验证美国和加拿大邮政编码的正则表达式

    我正在开发一个文具程序 客户可以选择美国或加拿大地区 当他们输入地址时 必须输入邮政编码 我正在尝试验证字段 但我无法对美国或加拿大使用 reg exp 我需要一个可验证两个国家 地区邮政编码的正则表达式 不知道您使用的是什么语言 我不会使
  • 垂直对齐属性如何工作?

    我不明白什么时候vertical align会和不会工作 每次我遇到一个用例vertical align至于它是否真的有效 这似乎是一个抛硬币的问题 我知道它必须应用于内联元素 我读到我必须指定一个line height对于通常没有的元素
  • Echoprint iOS 缺少框架

    有人下载过 EchoPrint 的 iOS 演示版本吗 它是一个音频指纹开源软件 我刚刚下载了它 但它似乎缺少框架 有什么地方可以获得功能版本吗 按照步骤使其框架运行 下载最新版本boost 下载link最新 1 51 0 的 boost
  • 无法启动 GlassFish 4.0 (Windows) - 端口 1527 - 地址已在使用中

    我是 Java EE 7 的新手 我有 Netbeans 7 4 GlassFish 4 0 和 Java EE 7 在 64 位 Windows 8 1 Pro 计算机中 我想要启动 GlassFish 4 0 Server 因此单击 N
  • 如何使用 Ramda 实现使用无点递归来删除对象中的空值?

    我正在学习 pointfree 函数 并尝试以这种风格实现这个递归空值删除器 有效 但是是not无点 function removeNulls obj return R ifElse R either R is Array R is Obj
  • 如何使用mongoose在mongodb中存储图像?

    任何人都有一个使用 mongoose 和 Nodejs Express 在 mongodb 中插入图像的快速示例 我读了一些例子 但我不明白如何做到这一点 我想以表格形式上传图片 app post videos new function r
  • Emacsclient 钩子上的kill

    我试图在 Emacs 中找到一个钩子 它应该在 emacs 服务器正常关闭之前触发 我尝试使用 elisp 来执行kill emacs query functions kill emacs hook server done hook 如下所
  • 如何在打乱的连续整数数组中查找重复元素?

    我最近在某处遇到一个问题 假设您有一个包含 1001 个整数的数组 整数按随机顺序排列 但您知道每个整数都在 1 到 1000 含 之间 此外 除了一个数字出现两次之外 每个数字在数组中只出现一次 假设您只能访问数组的每个元素一次 描述一种
  • JavaScript内部方法实现源码

    有没有办法查看 JavaScript 方法背后的代码 不是网站 html 或 js 文件中的 javascript 方法 而是 JavaScript 的内部方法 例如 我怎样才能看到JavaScript如何计算offsetTop一个元素的
  • MySQL DATETIME DIFF 查询

    我有一个 MySQL 查询 每 30 分钟通过 cron 运行一次以删除旧的属性列表 查询是 DELETE FROM wpdb gt posts WHERE post type rentals AND DATEDIFF NOW post d
  • 在 vuejs2 数据中动态插入子组件(无需 $compile 或滥用 v-html)

    我想在不一定是预定义的 HTML 块中的任意点动态插入新的 vuejs 组件 这是一个稍微做作的示例 演示了我正在尝试做的事情 Vue component child pretend I do something useful templa
  • 将字符串、整数和浮点数序列化为字符数组,以便在没有库的情况下进行网络连接

    我想通过网络传输数据 但我不想使用任何外部库 标准C C 就可以 例如 unsigned int x 123 char y 3 h i 0 float z 1 23f 我想要这个 char xyz 11 array 笔记 为了通过网络传输它
  • 编程 QGraphicsView 滚动未正确更新

    我有一个从 QGraphicsView 派生的自定义类 它实现了一个槽调用scrollHorizo ntal int dx 里面的代码很简单 void CustomView scrollHorizontal int dx scrollCon
  • Google Chart API 中的数字类型不匹配

    我有一个数组和第二列 其值如下2050 878456在我的 javascript 函数中创建面积图我做了以下内容 function drawVisualization var data null data new google visual
  • 如何将node.js日期转换为SQL Server兼容的日期时间?

    我有一个 Web Api 使用express and Tedious在 Azure SQL 数据库上存储一些数据 和nvarchar类型和int类型它运行良好 但是当我尝试保存时DateTime值我收到一条错误消息 Insert into
  • 如何使用 MPAndroidChart 库更改图表背景?

    我正在使用令人惊叹的图书馆MPAndroid图表 它的工作原理就像一个魅力 除非我试图更改 BarData 的背景颜色 默认颜色是白色 我想将其更改为透明 我试过这个 Paint p1 mChart getPaint Chart PAINT
  • 在 Node 应用程序之间共享代码

    我们的应用程序由两个组件组成 API 和客户端 两者都是独立的 Node 应用程序 虽然除了文档之外 API 实际上没有任何前端组件 但它们仍然共享一些通用文件 例如 Jade 组件 规范化 CSS 实用程序模块以及最重要的 Mongoos
  • 如何在 mac osx 中隐藏终端窗口?

    我有一个在 Windows Linux Android 和 Mac 上运行的多平台应用程序 它在所有平台上使用 g 编译 对于 Windows 我创建了一个安装程序 并通过添加链接器标志摆脱了终端窗口 Wl subsystem window