Mac OS 搭建C++开发环境【已解决】

Mac OS 搭建C++开发环境

文章目录

  • Mac OS 搭建C++开发环境
    • 一、安装命令行工具:
    • 二、安装vscode
    • 三、安装gcc
      • 3.1 安装Homebrew
      • 3.2 安装gcc
      • 3.3 修改配置
    • 四、更改VSCode默认编译器
    • 五、安装gdb
    • 六、安装Cmake && git
    • 七、编译运行

本地环境: Mac OS Sonoma 14.3.1(M3 Max)

目标状态: 安装VSCode,gcc编译工具,cmake,git,配置完成相关环境,成功编译运行相关项目。

一、安装命令行工具:

打开终端(command+空格,键入终端)

键入以下命令安装命令行工具:

xcode-select --install

二、安装vscode

打开官网:https://code.visualstudio.com

下载最新版VSCode并打开。

这里可能会有些差异,如果你的Mac OS系统版本比较旧,下载到的文件会显示成一个压缩包,正常解压并安装即可。新版本的则可以直接打开软件页面,手动拖拽到拓展坞即可。

打开VSCode,点击左下角个人账户,建议直接登录你的个人账户。

  • 如果你之前已经在Windows环境下使用过VSCode并登录过你的账户,此时只需再次登录你的账户,VSCode便会自动恢复你的云端环境,包括自动下载你之前使用过的插件。
  • 如果你是第一次使用VSCode,需要你自己安装相关插件,这部分本文不做相关描述。

另外,关于插件部分,这里着重聊一下关于codeRunner这个插件。这里可能需要你更改相关配置以便后续更好的使用:

在这里插入图片描述

打开扩展设置:

Clear Previous Output

建议打开。主要用于清除上一次输出。

在这里插入图片描述

Ignore Selection
在这里插入图片描述
建议打开。主要用于执行单行被选中的语句。

Run In Terminal
在这里插入图片描述
建议打开。这个选项强烈建议打开,如果不打开,执行程序的时候你会发现终端里无法读入你输入的数据,只能输出,无法输入。

自动保存
在这里插入图片描述
建议打开。主要用于运行前自动保存文件。

三、安装gcc

Mac 系统中默认的C/C++编译器是clang/clang++。

命令行使用gcc/g++或者clang/clang++来执行命令时,都是调用clang/clang++编译器,想使用gcc/g++编译器的话,需要自己安装。

查看一下gcc和clang:

clang -v
gcc -v
g++ -v

在这里插入图片描述
可以看到显示的都是clang。这时候需要我们手动安装gcc并配置相关编译环境。

3.1 安装Homebrew

打开终端,键入指令:

/bin/bash -c "$(curl -fsSL https://gitee.com/ineo6/homebrew-install/raw/master/install.sh)"

按照提示安装即可。

键入brew help,出现以下信息即安装成功:
在这里插入图片描述

3.2 安装gcc

brew install gcc

在这里插入图片描述
这里可以看到我这里下载到的是gcc-13,大版本号为13.

3.3 修改配置

gcc -v

在这里插入图片描述
可以看到显示的仍然是clang的版本信息。

这是由于macOS中的gcc名字被占用,所以需要使用gcc-13来调用新安装的gcc编译器集:

gcc-13 -v

在这里插入图片描述
如果想使用gcc命令来调用gcc编译器而不是clang,可以修改默认编译器。

输入“vim ~/.zprofile”回车后按下i键进入编辑模式,按如图所示的方式复制并修改以下的文本来更改系统的配置信息,添加到配置文件的末尾即可。(X代表你gcc的大版本,例如我的是13)

alias gcc='gcc-X'  
alias cc='gcc-X'  
alias g++='g++-X'  
alias c++='c++-X'

在这里插入图片描述
保存后,键入source ~/.zprofile更新环境。

此时,重新查看版本,即可看到输出的是我们安装的gcc-13,而不再是clang,这就正常了:
在这里插入图片描述

四、更改VSCode默认编译器

打开VSCode,写一个C++ Hello World 程序,然后点击下方编译器设置,打开配置页面:

在这里插入图片描述
在这里插入图片描述
打开配置UI界面,找到编译器路径:
在这里插入图片描述
可以看到现在仍是以clang作为编译器。
打开终端,输入命令:

brew list gcc 

复制g++的路径:
在这里插入图片描述

填入VSCode的编译器路径里面,并将配置名称修改为Mac:

在这里插入图片描述

打开终端,输入命令:

gcc -v -E -x c++ -

将#include <…> search starts here:下面的路径全部复制下来:

在这里插入图片描述
返回到VSCode页面,找到下面的IntelliSense 模式,在第一行${workspaceFolder}/**的下面粘贴复制的路径:
在这里插入图片描述

返回到代码页面,手动修改为刚刚设置过的配置“Mac”:
在这里插入图片描述
编译,运行即可:
在这里插入图片描述

五、安装gdb

macOS的debugger是lldb,所以得自己安装gdb。
但问题是M系列使用的是ARM架构,gdb是针对x86架构的调试工具,因此不能在M芯片的机器上安装和使用gdb!!!
可以使用LLDB作为替代,LLDB是苹果官方提供的调试工具,支持ARM架构,并且可以用于C++调试。LLDB提供了类似于gdb的功能,可以设置断点、查看变量值等。

六、安装Cmake && git

打开终端,键入相关命令:

brew install cmakebrew install git

七、编译运行

随便找个开源项目编译运行一下,验证一下是否配置正确。

git clone https://github.com/gabime/spdlog.gitcd spdlogmkdir buildcd buildcmake ..make

在这里插入图片描述
可以看到使用camke编译并运行成功。

这里针对小白多说一句。
如果你之前没有接触过linux上的开发环境,只使用过Windows去开发代码,需要注意一个问题,Windows下的文件路径使用反斜杠 \,而Mac下的文件路径使用正斜杠 /.

如果你在这一步使用你自己之前的项目去编译的时候,可能会由于这个原因导致VSCode提示include路径错误。解决办法就是改成正确的文件路径即可。

Enjoy it !

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2806461.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

VTK的渲染原理

下面三张图均是用VTK实现的&#xff0c;从中很容易看出它们渲染的效果是有区别的&#xff1a; 第一张图&#xff1a;过于明亮&#xff0c;看不到阴影&#xff0c;颜色过渡也不平缓&#xff1b; 第二张图&#xff1a;阴影过于明显&#xff0c;图整体不够明亮&#xff1b; 第三…

C++基础知识(四:类的学习)

类 类指的就是对同一类对象&#xff0c;把所有的属性都封装起来&#xff0c;你也可以把类看成一个高级版的结构体。 【1】定义 class 类名 { 访问权限:成员属性; 访问权限:成员方法; }访问权限&#xff1a; public:共有的&#xff0c;类内、类外和子类中都可以访问 private:私有…

接近于pi的程序

在一个平静的午后&#xff0c;两个神秘的数字悄然相遇了。它们分别是-1031158223和-328227871。这两个数字看起来普普通通&#xff0c;但谁知它们背后隐藏着一段令人惊叹的奇幻之旅。 这两个数字其实是π的两位探险家&#xff0c;它们决定通过一次除法运算来探索π的奥秘。它们…

怎么在线生成动态gif?这个网站一定要知道

静态图片是指一张固定的、不具有动态效果的图片。它通常是由像素点组成的&#xff0c;可以是照片、插图、图标等。静态图片只能呈现一种特定的场景或图像&#xff0c;不能展示动态变化。动态图片&#xff08;是由一系列静态图片组成的&#xff0c;通过快速连续播放这些画面&…

线程共享和非共享的资源及线程优缺点

注意&#xff1a;共享的内存地址空间中不包括栈&#xff1b;共享文件描述符表&#xff0c;表示&#xff0c;同一进程中线程可以操作同一文件。

使用代理IP技术实现爬虫同步获取和保存

概述 在网络爬虫中&#xff0c;使用代理IP技术可以有效地提高爬取数据的效率和稳定性。本文将介绍如何在爬虫中同步获取和保存数据&#xff0c;并结合代理IP技术&#xff0c;以提高爬取效率。 正文 代理IP技术是一种常用的网络爬虫技术&#xff0c;通过代理服务器转发请求&a…

力扣 48. 旋转图像

1.题目 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]]…

探索设计模式的魅力:状态模式揭秘-如何优雅地处理复杂状态转换

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;并且坚持默默的做事。 探索设计模式的魅力&#xff1a;状态模式揭秘-如何优雅地处理复杂状态转换 文章目录 一、案例…

HCIA-HarmonyOS设备开发认证V2.0-IOT硬件子系统-WatchDog

目录 一、 WATCHDOG 概述功能简介基本概念 二、WATCHDOG 模块相关API三、WATCHDOG HDF驱动开发3.1、开发步骤(待续...) 坚持就有收获 一、 WATCHDOG 概述 功能简介 看门狗&#xff08;Watchdog&#xff09;&#xff0c;又称看门狗计时器&#xff08;Watchdog timer&#xff0…

零基础学编程,编程简单学,中文编程工具下载及工具箱进度条构件的用法

一、前言 今天给大家分享的中文编程开发语言工具 进度条构件的用法。 编程入门视频教程链接 https://edu.csdn.net/course/detail/39036 编程工具及实例源码文件下载可以点击最下方官网卡片——软件下载——常用工具下载——编程工具免费版下载及实例源码下载。 进度条 进度…

涵盖5大领域的机器学习工具介绍

随着数据的产生及其使用量的不断增加&#xff0c;对机器学习模型的需求也在成倍增加。由于ML系统包含了算法和丰富的ML库&#xff0c;它有助于分析数据和做出决策。难怪机器学习的知名度越来越高&#xff0c;因为ML应用几乎主导了现代世界的每一个方面。随着企业对这项技术的探…

信息检索(二):Dense Passage Retrieval for Open-Domain Question Answering

Dense Passage Retrieval for Open-Domain Question Answering 摘要1. 引言2. 背景3. DPR4. 实验设置5. 实验&#xff1a;文章检索6. 实验&#xff1a;问题问答7. 相关工作8. 结论参考资料 原文链接&#xff1a;https://aclanthology.org/2020.emnlp-main.550.pdf DPR 最早引入…

六、回归与聚类算法 - K-means算法

目录 1、K-means 聚类步骤 2、API 3、案例 4、性能评估指标 5、总结 线性回归欠拟合与过拟合线性回归的改进 - 岭回归分类算法&#xff1a;逻辑回归模型保存与加载无监督学习&#xff1a;K-means算法 1、K-means 聚类步骤 2、API 3、案例 4、性能评估指标 5、总结

【数据结构与算法初学者指南】【冲击蓝桥篇】String与StringBuilder的区别和用法

&#x1f389;&#x1f389;欢迎光临&#x1f389;&#x1f389; &#x1f3c5;我是苏泽&#xff0c;一位对技术充满热情的探索者和分享者。&#x1f680;&#x1f680; &#x1f31f;特别推荐给大家我的最新专栏《数据结构与算法&#xff1a;初学者入门指南》&#x1f4d8;&am…

【 JS 进阶 】Web APIs (一)

“生命是一曲奇妙的交响&#xff0c;每一段都是挑战&#xff0c;每一个音符都是机遇。在激情的旋律中&#xff0c;用勇气弹奏&#xff0c;创造出属于自己的华彩人生。” - 贝多芬 了解 DOM 的结构并掌握其基本的操作&#xff0c;体验 DOM 的在开发中的作用 知道 ECMAScript 与 …

基于SpringBoot的家教管理系统

基于SpringBootVue的家教管理系统的设计与实现~ 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBootMyBatis工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 前台主页 家教 个人中心 管理员界面 摘要 本文介绍了基于SpringBoot框架开发的家…

【深度学习笔记】3_5 图像分类数据集fashion-mnist

注&#xff1a;本文为《动手学深度学习》开源内容&#xff0c;仅为个人学习记录&#xff0c;无抄袭搬运意图 3.5 图像分类数据集&#xff08;Fashion-MNIST&#xff09; 在介绍softmax回归的实现前我们先引入一个多类图像分类数据集。它将在后面的章节中被多次使用&#xff0c…

论文是怎么一回事

最近找到女朋友了&#xff0c;她还挺关心我毕业和论文的事情&#xff0c;我开始着手弄论文了~ 说来惭愧&#xff0c;我一直以为读研就是做东西当作工作来完成&#xff0c;结果一直陷入如何实现的问题&#xff0c;结果要论文时不知道怎么弄创新点&#xff0c;这才转过头来弄论文…

信号系统之线性图像处理

1 卷积 图像卷积的工作原理与一维卷积相同。例如&#xff0c;图像可以被视为脉冲的总和&#xff0c;即缩放和移位的delta函数。同样&#xff0c;线性系统的特征在于它们如何响应脉冲。也就是说&#xff0c;通过它们的脉冲响应。系统的输出图像等于输入图像与系统脉冲响应的卷积…

重点媒体如何投稿?考核稿件投稿指南

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 机构组织&#xff0c;国企央企都需要定期将相关新闻投递到央媒&#xff0c;官媒&#xff0c;或者地方重点媒体中&#xff0c;那么如何进行投稿了&#xff0c;今天就与大家分享下。 央媒投…