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 cmake

brew install git

七、编译运行

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

git clone https://github.com/gabime/spdlog.git

cd spdlog

mkdir build

cd build

cmake ..

make

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

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

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

Enjoy it !

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python中回调函数的理解与应用

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站零基础入门的AI学习网站~。 目录 前言 回调函数的概念 回调函数的基本用法 回调函数的实现方式 1 使用函数 2 使用类方法 3 使用类实…

QWidget: Must construct a QApplication before a QWidget 13:25:48: 程序异常结束。

QWidget: Must construct a QApplication before a QWidget 13:25:48: 程序异常结束。 你的插件是release&#xff0c;而你用了debug模式、

一元函数微分学——刷题(19

目录 1.题目&#xff1a;2.解题思路和步骤&#xff1a;3.总结&#xff1a;小结&#xff1a; 1.题目&#xff1a; 2.解题思路和步骤&#xff1a; 题目给的是个复合函数&#xff0c;因此需要根据复合函数求得原本f’(x)的表达式&#xff1a; 3.总结&#xff1a; 题目给的是个…

Java EE改名Jakarta EE,jakarta对程序开发的影响

一、前言 很多Java程序员在使用新版本的Spring6或者springboot3版本的时候&#xff0c;发现了一些叫jakarta的包。我在阅读开源工作流引擎camunda源代码的时候&#xff0c;也发展了大量jakarta的工程包。 比如&#xff1a;camunda的webapps编译工程就提供了2种方式javax和jaka…

linux系统---httpd

目录 Internet的起源 一、http协议——超文本传输协议 1.http相关概念 二、HTTP请求访问的完整过程 1、 建立连接 2、 接收请求 3、 处理请求 常用请求Method: GET、POST、HEAD、PUT、DELETE、TRACE、OPTIONS 3.1 常见的HTTP方法 3.2 GET和POST比较 4、访问资源 …

【YOLO系列算法人员摔倒检测】

YOLO系列算法人员摔倒检测 模型和数据集下载YOLO系列算法的人员摔倒检测数据集可视化数据集图像示例&#xff1a; 模型和数据集下载 yolo行人跌倒检测一&#xff1a; 1、训练好的行人跌倒检测权重以及PR曲线&#xff0c;loss曲线等等&#xff0c;map达90%多&#xff0c;在行人跌…

黑马程序员——接口测试——day02

目录&#xff1a; Postman基础使用 简介和安装案例一&#xff1a;案例二&#xff1a;案例三&#xff1a;接口用例设计 接口测试的测试点 功能测试性能测试安全测试接口用例设计方法 单接口测试业务场景测试单接口测试用例 模版分析测试点 登录添加员工查询员工业务场景测试用例…

操作系统-复试笔记

http://t.csdnimg.cn/PJLWh 操作系统基础 什么是操作系统&#xff1f; 操作系统&#xff08;Operating System&#xff0c;简称 OS&#xff09;是管理计算机硬件与软件资源的程序&#xff0c;是计算机的基石。操作系统本质上是一个运行在计算机上的软件程序 &#xff0c;用于…

【问答】接地原则

以前谈到电源去耦&#xff0c;我警告过糟糕的去耦会增加放大器的失真。一位读者问了一个有趣的问题&#xff0c;去耦电容的接地脚应该在哪里接地才能消除这个问题呢&#xff1f; 这个问题升级到关于正确接地的技术。题目太大了&#xff0c;不过我也许能够提供一些启发性的例子…

doxygen 注释->API接口文档

1.doxygen官方下载 2.工程根目录下(如qt工程.pro同级目录) #doxygen file_name 用以注释生成接口文档的输入(生成file_name文件) doxygen安装目录\bin\doxygen -g doxygen_pro #生成API接口文档&#xff0c;该步骤会生成html目录与latex目录 doxygen安装目录\bin\doxygen axis…

森歌深化体育营销战略,揭晓2024奥运新代言人,携手共创影响力奇迹

2024年&#xff0c;奥运龙年的春节将将过去&#xff0c;各大高端品牌便纷纷开始激烈博弈。森歌有备而来&#xff01;布局早&#xff0c;积累深&#xff0c;以其深入骨髓的体育情怀和独具匠心的品牌策略&#xff0c;成为厨电行业的佼佼者。2月27日-2月28日&#xff0c;森歌将在杭…

MyBatis进阶

目录 一、实现多表查询 二、#{}和${} 1、#{}和${}的使用 2、#{}和${}的区别 3、${}的使用场景 三、数据库连接池 1、数据库连接池概念 2、常见数据库连接池 3、修改连接池为Hikari 四、动态sql语句--xml 1、if标签 2、tirm标签 3、where标签 4、set标签 5、fore…

Docker复习笔记

Centos7安装Docker Docker官网:www.docker.com Docker官网仓库:hub.docker.com Docker文档是比较详细的 安装相关依赖 yum -y install gcc gcc-c yum install -y yum-utils 设置docker镜像仓库 yum-config-manager --add-repo https://download.docker.com/linux/centos/do…

云尚办公-0.0.1

1. 核心技术 基础框架&#xff1a;SpringBoot数据缓存&#xff1a;Redis数据库&#xff1a;MySQL权限控制&#xff1a;SpringSecurity工作流引擎&#xff1a;Activiti前端技术&#xff1a;vue-admin-template Node.js Npm Vue ElementUI Axios微信公众号&#xff1a;公众…

【FreeRTOS】任务创建

参考博客&#xff1a; ESP-IDF FreeRTOS 任务创建分析 - [Genius] - 博客园 (cnblogs.com) 1.什么是任务 1&#xff09;独立的无法返回的函数称为任务 2&#xff09;任务是无线循环 3&#xff09;无返回数据 2.任务的实现过程 1.定义任务栈 裸机程序&#xff1a;统一分配到一…

centos7部署单机项目和自启动

centos7部署单机项目和服务器自启动 1.安装jdk和tomact1.1上传jdk、tomcat安装包1.2解压两个工具包1.3.配置并且测试jdk安装1.4.启动tomcat1.5.防火墙设置1.6配置tomcat自启动 2.安装mysql2.1卸载mariadb&#xff0c;否则安装MySql会出现冲突(先查看后删除再查看)2.2在线下载My…

2023年12月CCF-GESP编程能力等级认证C++编程七级真题解析

一、单选题(共15题,共30分) 第1题 定义变量 double x ,如果下面代码输入为 100 ,输出最接近( )。 A:0 B:-5 C:-8 D:8 答案:B 第2题 对于下面动态规划方法实现的函数,以下选项中最适合表达其状态转移函数的为( )。 A: B: C: D:

[LWC] Components Communication

目录 Overview ​Summary Sample Code 1. Parent -> Child - Public Setter / Property / Function a. Public Property b. Public getters and setters c. Public Methods 2. Child -> Parent - Custom Event 3. Unrelated Components - LMS (Lightning Message…

Vue packages version mismatch 报错解决

问题 npm run dev 运行项目的过程中&#xff0c;报错 Vue packages version mismatch 解决方法 根据报错不难看出是 vue 与 vue-template-compiler 版本产生了冲突&#xff0c;vue 与 vue-template-compiler 的版本是需要匹配的。所以解决的办法就是先修改其中一个的版本将 v…

[C++]宏定义

C/C宏的基本使用方法 宏是C/C所支持的一种语言特性&#xff0c;我对它最初的印象就是它可以替换代码中的符号&#xff0c;最常见的例子便是定义一个圆周率PI&#xff0c;之后在代码中使用 PI 来代替具体圆周率的值。 确实如此&#xff0c;宏提供了一种机制&#xff0c;能够使…
最新文章