MacOS:使用纯C++创建一个简单的MacAPP的Demo(可以双击运行的那种)
MacOS使用纯C创建一个简单的MacAPP的Demo(可以双击运行的那种)有没有想过Mac上那些app是怎么做出来的里面都包含了什么东西今天就来做一个最简单的Mac APP。背景Mac的app安装方式就是把xx.app拖拽到/Applications目录下且/Applications目录下有很多文件夹(对应着一个个的软件)。每个xx.app其实都是一个文件夹里面有可执行文件、资源、元信息等只是Mac把这种特殊的文件夹显示为应用图标并且在你双击这种文件夹的时候直接按照元信息运行其中的可执行程序罢了。超小的.app制作新建一个空的文件夹如“testMacAPP”进入这个文件夹创建一个main.cpp并写入如下内容#includecstdlibintmain(){system(osascript -e tell application \Terminal\ to activate);system(osascript -e tell application \Terminal\ to do script \echo Hello from C App; read\);return0;}在此文件夹下创建Hello.app/Contents/MacOS子文件夹编译上述cpp源码并将可执行程序放到Hello.app/Contents/MacOS文件夹下clang main.cpp-oHello.app/Contents/MacOS/Hello接下来在Hello.app/Contents文件夹下创建Info.plist文件并写入以下内容?xml version1.0 encodingUTF-8?plistversion1.0dictkeyCFBundleExecutable/keystringHello/stringkeyCFBundleIdentifier/keystringxyz.letmefly.example.simpleapp.hello/stringkeyCFBundleName/keystringLets Hello/string/dict/plist然后你的app就做好了。最终结构如下testMacAPP ├── Hello.app │ └── Contents │ ├── Info.plist │ └── MacOS │ └── Hello └── main.cpp这个Hello.app文件夹就是一个可以双击运行的Mac app。现在打开testMacApp文件夹可以看到Hello.app不是一个普通文件夹的图标而是一个默认应用的图标。双击这个应用会弹出弹窗问是否允许这个应用控制“终端”点击允许后重新运行下这个应用可以看到弹出了一个终端上面有如下类似的字样echoHello from C App;read➜ ~echoHello from C App;readHello from C App等你随便输入一些东西并按下回车后将会变成一个普通的终端。小app一键生成脚本也可以运行下面的脚本一键生成mkdir-pHello.app/Contents/MacOScatmain.cppEOF #include cstdlib int main() { system(osascript -e tell application \Terminal\ to activate); system(osascript -e tell application \Terminal\ to do script \echo Hello from C App; read\); return 0; } EOFclang main.cpp-oHello.app/Contents/MacOS/Hellochmodx Hello.app/Contents/MacOS/HellocatHello.app/Contents/Info.plistEOF ?xml version1.0 encodingUTF-8? plist version1.0 dict keyCFBundleExecutable/key stringHello/string keyCFBundleIdentifier/key stringxyz.letmefly.example.simpleapp.hello/string keyCFBundleName/key stringLets Hello/string /dict /plist EOFThe EndThe End, Thanks!同步发文于CSDN和我的个人博客原创不易转载经作者同意后请附上原文链接哦~千篇源码题解已开源

相关新闻

张量网络:连接模型压缩与量子机器学习的数学桥梁

张量网络:连接模型压缩与量子机器学习的数学桥梁

1. 项目概述:当张量网络遇见机器学习如果你在机器学习领域摸爬滚打了一段时间,尤其是深度神经网络模型越做越大、参数动辄百亿千亿的今天,一定对“模型压缩”和“算力焦虑”这两个词深有感触。我们一边惊叹于大模型涌现出的惊人能力&#xff…

2026/6/21 1:50:50阅读更多 →
【JAVA毕设源码分享】基于springboot的旅行行程规划管理系统(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于springboot的旅行行程规划管理系统(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/6/21 1:45:50阅读更多 →
如何用Python构建高效的Bilibili评论爬虫系统:从零到批量采集实战指南

如何用Python构建高效的Bilibili评论爬虫系统:从零到批量采集实战指南

如何用Python构建高效的Bilibili评论爬虫系统:从零到批量采集实战指南 【免费下载链接】BilibiliCommentScraper B站视频评论爬虫 Bilibili完整爬取评论数据,包括一级评论、二级评论、昵称、用户ID、发布时间、点赞数 项目地址: https://gitcode.com/g…

2026/6/21 1:45:50阅读更多 →
临床预测模型的双层次不确定性校准:CURA框架原理与工程实践

临床预测模型的双层次不确定性校准:CURA框架原理与工程实践

1. 项目概述:当临床预测模型遇上“不确定性”在医疗健康领域,尤其是临床决策支持系统中,风险预测模型扮演着越来越关键的角色。无论是评估患者术后并发症的风险,还是预测某种疾病的进展概率,一个准确的模型能帮助医生提…

2026/6/21 3:06:02阅读更多 →
基于专家模型特征提取与分解的分类性能评估与提升实战

基于专家模型特征提取与分解的分类性能评估与提升实战

1. 项目概述:当专家模型遇上特征工程在机器学习的实际项目里,我们常常会遇到一个经典困境:模型性能似乎遇到了瓶颈,无论怎么调参、换模型,准确率或F1分数就是上不去几个百分点。这时候,很多人的第一反应是去…

2026/6/21 3:06:02阅读更多 →
DigitalOcean LAMP 1-Click 部署深度指南:从踩坑到生产就绪

DigitalOcean LAMP 1-Click 部署深度指南:从踩坑到生产就绪

1. 这不是“一键安装”,而是DigitalOcean为你预装好的LAMP运行环境你点开DigitalOcean控制台,看到那个醒目的LAMP 1-Click Install按钮时,第一反应很可能是:“太好了,点一下,网站就跑起来了?”—…

2026/6/21 3:06:02阅读更多 →
张量网络与机器学习融合:原理、价值与实践指南

张量网络与机器学习融合:原理、价值与实践指南

1. 项目概述:当张量网络遇见机器学习如果你对量子物理、凝聚态物理或者量子计算有所涉猎,那么“张量网络”这个词对你来说可能并不陌生。它最初是物理学家用来描述复杂量子多体系统的一种强大数学工具,其核心思想是将一个庞大的、难以直接处理…

2026/6/21 3:06:02阅读更多 →
LinkSwift:九大网盘免费高速下载终极解决方案

LinkSwift:九大网盘免费高速下载终极解决方案

LinkSwift:九大网盘免费高速下载终极解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘 / 迅…

2026/6/21 3:06:01阅读更多 →
3步掌握终极Windows窗口调整方案:WindowResizer高效工作指南

3步掌握终极Windows窗口调整方案:WindowResizer高效工作指南

3步掌握终极Windows窗口调整方案:WindowResizer高效工作指南 【免费下载链接】WindowResizer 一个可以强制调整应用程序窗口大小的工具 项目地址: https://gitcode.com/gh_mirrors/wi/WindowResizer 你是否经常遇到某些应用程序窗口无法调整大小,…

2026/6/21 3:01:01阅读更多 →
【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体 一文搞定到底什么是智能体【人工智能】一文搞定到底什么是智能体一. LM,WorkFlow,Agent分别有什么么不同二. Agent的思考过程是怎样的三. Agent的五个核心部分1)LLM2)Prompt3)Me…

2026/6/21 0:00:40阅读更多 →
嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

1. 嵌入式GUI控件:从原理到实战的深度解析在嵌入式系统开发中,图形用户界面(GUI)的设计与实现往往是项目从“能用”到“好用”的关键一跃。不同于资源充沛的PC或移动平台,嵌入式设备的GUI需要在有限的CPU性能、内存空间…

2026/6/21 0:00:40阅读更多 →
Google AI Studio 300美元额度的真相与实战指南

Google AI Studio 300美元额度的真相与实战指南

1. 这300美金不是“送钱”,而是Google埋下的第一道技术门槛 你看到标题里那个醒目的“$300美金”时,第一反应可能是:又一个免费额度?领完就完事?我亲手试过——这300美金根本不是红包,而是一张入场券&…

2026/6/21 0:00:40阅读更多 →
【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体 一文搞定到底什么是智能体【人工智能】一文搞定到底什么是智能体一. LM,WorkFlow,Agent分别有什么么不同二. Agent的思考过程是怎样的三. Agent的五个核心部分1)LLM2)Prompt3)Me…

2026/6/21 0:00:40阅读更多 →
嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

1. 嵌入式GUI控件:从原理到实战的深度解析在嵌入式系统开发中,图形用户界面(GUI)的设计与实现往往是项目从“能用”到“好用”的关键一跃。不同于资源充沛的PC或移动平台,嵌入式设备的GUI需要在有限的CPU性能、内存空间…

2026/6/21 0:00:40阅读更多 →
Google AI Studio 300美元额度的真相与实战指南

Google AI Studio 300美元额度的真相与实战指南

1. 这300美金不是“送钱”,而是Google埋下的第一道技术门槛 你看到标题里那个醒目的“$300美金”时,第一反应可能是:又一个免费额度?领完就完事?我亲手试过——这300美金根本不是红包,而是一张入场券&…

2026/6/21 0:00:40阅读更多 →