当前位置: 首页 > news >正文

MacOS 环境下 VSCode 的 C++ 环境搭建

MacOS 环境下 VSCode 的 C++ 环境搭建

编译器安装

编译器可以选择 Clang 或者 GCC,在 MacOS 上 Clang 的安装更为简单一些。

Clang(推荐)

打开终端输入命令,

clang -v
查看是否已经安装。

如果已经安装,会输出类似于如下的信息:

Apple clang version 14.0.0 (clang-1400.0.29.202) Target: arm64-apple-darwin22.2.0 Thread model: posix InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

如果没有安装,则输入命令Xcode-select --install进行安装。

GCC

首先需要安装 brew,安装方法见官网,如果国内访问速度比较慢,可以自行搜索 brew 国内镜像。

然后输入命令brew install gcc进行安装。

插件安装

在 VSCode 中安装如下的三个插件

C/C++:提供了编辑的代码智能提示(IntelliSense)和调试(debugging) 功能;
CodeLLDB:提供了更加强力的调试支持;
Code Runner:更方便地运行代码(非调试);
配置文件生成

c_cpp_properties.json

c_cpp_properties.json 中包含了编译器路径、头文件路径等等的设置信息,这些信息主要用于编辑的代码智能提示(IntelliSense)。

在 VSCode 中按下 ⇧⌘P,输入命令C/C++: Edit Configurations (UI)打开 C/C++ 的配置页面。根据 CPU 架构(一般是 Intel 或 Apple Silicon) 和编译器(Clang 或 GCC) 的不同,我们需要在配置页面中设置 编译器路径 IntelliSense 模式 这两个选项。

编译器路径

从下拉框中选择 Clang/GCC 可执行文件对应的路径。

Clang 的路径示例

/usr/bin/clang 或者 /usr/bin/clang++

GCC 的路径示例

/opt/homebrew/Cellar/gcc/12.2.0/bin/g++

IntelliSense 模式

CPU – 编译器 – 选项
Intel – Clang – macos-clang-x64
Intel – GCC – macos-gcc-x64
Apple Silicon – Clang – macos-clang-arm64
Apple Silicon – GCC – macos-gcc-arm64

在 C/C++ 的配置页面设置好之后,VSCode 会为我们自动生成c_cpp_properties.json 文件。

c_cpp_properties.json 的示例

{"configurations": [{"name": "Mac","includePath": ["${workspaceFolder}/**"],"defines": [],"macFrameworkPath": ["/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks"],"compilerPath": "/usr/bin/clang","cStandard": "c17","cppStandard": "c++17","intelliSenseMode": "macos-clang-arm64"}],"version": 4
}

tasks.json

在 tasks.json 中,我们会定义一个编译可执行文件的任务,

我们可以通过 VSCode 来自动生成这个文件,只要在 C++ 源文件中按下 F5,选择对应的选项(Clang 选择编译器 Clang++,GCC 选择编译器 G++),就会生成这个文件。

tasks.json 的示例

{"version": "2.0.0","tasks": [{"type": "cppbuild","label": "生成活动文件","command": "/usr/bin/clang++","args": ["-fcolor-diagnostics","-fansi-escape-codes","-g","${file}","-o","${fileDirname}/${fileBasenameNoExtension}"],"options": {"cwd": "${fileDirname}"},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true},"detail": "编译器: /usr/bin/clang++"}]
}

launch.json

在 launch.json 中我们将设置调试相关的内容。

在之前生成 tasks.json 的同时,也会自动生成这个文件。这个文件的 type 一般会设置为 cppdbg。为了使用 CodeLLDB,建议将其改成 lldb

launch.json 的示例(cppdbg)

{"version": "0.2.0","configurations": [{"name": "生成和调试活动文件","type": "cppdbg","request": "launch","program": "${fileDirname}/${fileBasenameNoExtension}","args": [],"stopAtEntry": true,"cwd": "${workspaceFolder}","environment": [],"externalConsole": true, // 推荐设置为 true,否则在调试过程中无法接受输入"MIMode": "lldb","preLaunchTask": "生成活动文件"}]
}

launch.json 的示例(lldb)

{"version": "0.2.0","configurations": [{"name": "生成和调试活动文件","type": "lldb","request": "launch","program": "${fileDirname}/${fileBasenameNoExtension}","args": [],"cwd": "${workspaceFolder}","preLaunchTask": "生成活动文件"}]
}

⚠️注意:请确保launch.json 中 preLaunchTask 的值和 tasks.json 中的 label 保持一致。

相关文章:

MacOS 环境下 VSCode 的 C++ 环境搭建

MacOS 环境下 VSCode 的 C 环境搭建 编译器安装 编译器可以选择 Clang 或者 GCC,在 MacOS 上 Clang 的安装更为简单一些。 Clang(推荐) 打开终端输入命令, clang -v 查看是否已经安装。 如果已经安装,会输出类似于如下的信息&#xff1…...

WPF样式

WPF(Windows Presentation Foundation)是微软推出的一种用于构建Windows应用程序的UI框架。它提供了一套丰富的控件、图形和动画功能,允许开发者创建具有丰富视觉效果的现代用户界面。WPF中的样式(Styles)是一种强大的…...

Vue Router 如何配置 404 页面?

在 Vue 项目中,如果你想配置一个 404 页面(即找不到页面提示),你需要通过 Vue Router 来设置。这通常通过将路由配置中的 *(通配符)指向一个 404 组件来实现。 // 定义路由部分 const routes [{path: /,c…...

【C++:智能指针】

什么是内存泄漏 内存泄漏是指因为疏忽或者错误造成程序对一部分不再使用的内存没有进行释放的情况,内存释放不是指内存在物理上的消失,而是应用程序分配某段内存时,因设计错误,失去了对该内存的控制,从而造成内存浪费 …...

onlyoffice docker启用jwt并生成jwt

一、说明 本文是docker教程,linux/win的安装版本也类似,只需要修改配置文件中的secrt就可以了【Configuring JWT for ONLYOFFICE Docs - ONLYOFFICE】 二、正文开始 docker启动时候如果不想使用jwt,加上参数-e JWT_ENABLEDfalse就可以了&…...

希尔贝壳受邀参加首届“数据标注产业大会暨供需对接会”

为推动数据标注产业高质量发展,促进数据标注基地快速形成面向产业的规模化服务能力。10月22日,由国家数据局数字科技和基础设施建设司指导的首届“数据标注产业大会暨供需对接会”在北京召开,希尔贝壳受邀参加。 大会旨在进一步推动数据标注…...

35.第二阶段x86游戏实战2-C++遍历技能

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要…...

Jenkins发布vue项目,版本不一致导致build错误

问题一 yarn.lock文件的存在导致在自动化的时候,频频失败问题二 仓库下载的资源与项目资源版本不一致 本地跑好久的一个项目,现在需要部署在Jenkins上面进行自动化打包部署;想着部署后今后可以省下好多时间,遂兴高采烈地去部署&am…...

vue3使用webSocket

1.安装插件 npm i vueuse/core10.11.12.引入使用 import { useWebSocket } from "vueuse/core"const { send, open, close: wsClose, status } useWebSocket(ws://192.168.100.90:53021/inms-application/alarm, {onMessage: (ws, { data }) > {console.log(&q…...

957种卫星参数文档的分享下载

自1957年10月4日苏联发射第一颗人造卫星Sputnik-1至今已经有67年,如今卫星已经在气象、遥感和通讯等领域为我们提供服务。 现在为你分享957种卫星参数,需要Excel文档请在文未查看领取下载方式。 卫星介绍 卫星是由人类制造并发射到太空,围…...

负载均衡详解:背景、实现技术、作用范围与常用算法

负载均衡(Load Balancing)是一种通过将请求分配到多个服务器上,从而优化资源使用、提高响应速度并增强系统可靠性的一种技术手段。它是现代分布式系统和互联网应用中不可或缺的一部分。在本篇文章中,我们将深入探讨负载均衡的方方…...

CCAA:产品认证基础3(产品认证方案)

学习要点 *产品认证方案和认证制度 *产品认证方案的基本要素、功能和活动 *产品认证方案的类型 *产品认证方案的制订和实施 *质量管理体系在产品认证方案中的应用 *典型产品认证方案的应用 第一节 产品认证方案和产品认证制度 一、概念 认证制度是指实施认证的规则、程序和…...

go语言中的Scan()和Scanln()输入函数

Scan()输入函数 package mainimport "fmt"func main() {var a intvar b stringfor {fmt.Println("请输入一个整数和一个字符串(用空格分隔):")fmt.Scan(&a, &b) // 直接读取输入到变量中fmt.Println("整数…...

UML外卖系统报告(包含具体需求分析)

1 系统背景 随着互联网技术的快速发展,外卖订餐服务逐渐成为人们生活中的一部分。传统的电话订餐方式面临诸多不便和限制,而基于互联网的外卖订餐系统则提供了更加便捷、快速和高效的订餐服务。这种系统通过将餐厅、顾客和配送人员连接起来,…...

net Core Data Protection 数据保护 加密 编码 哈希 FromServices

》》》 通过构造函数 获取服务 [Route("api/[controller]")][ApiController]public class DataProtectController : ControllerBase{[HttpGet]public string Info(){return "zen";}// [FromServices] 自动获取 builder.Services.AddDataProtection()注…...

4K手机壁纸之动漫系列

因为平台限制了图片大小,大家将就看吧,原图找me...

关于eclipse的workspace

如果项目很多,为了方便管理,最好不要是使用working set 对项目进行分组。一个workspace加载项目过多,即使进行分组,有些操作也很对所有项目生效。为了避免卡顿,建议直接使用workspace分组管理,而不是workin…...

Vue引入高德地图自定义信息窗体绑定点击事件无效解决方案

你们好,我是金金金。 场景 笔者用的Vue3,引入了高德地图,version为2.0,场景如下: 在地图上根据经纬度度打点标记了一个位置,然后点击点标记弹出自定义信息窗体,右上角关闭按钮则是绑定了关闭自定…...

私域朋友圈运营

今天必须给大家分享一份超棒的朋友圈运营思维导图 有了它,你可以逐步打造属于自己的精彩朋友圈🎉。无论是想分享生活点滴💧,还是展示个人魅力✨,又或者推广自己的业务📈,这份思维导图都能给你指…...

【Vue】word / excel / ppt / pdf / 视频(mp4,mov) 预览

文件预览 Vue3一. word二. excel三. ppt四. pdf4.1 vue-pdf-embed4.2 iframe 五. 视频六&#xff1a;扩展——kkFileView Vue3 一. word 安装&#xff1a;npm install docx-preview父页面 <template><div><DocPreviewv-if"filePath.includes(docx)"…...

Java毕业设计:WML信息查询与后端信息发布系统开发

JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发&#xff0c;实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构&#xff0c;服务器端使用Java Servlet处理请求&#xff0c;数据库采用MySQL存储信息&#xff0…...

多模态图像修复系统:基于深度学习的图片修复实现

多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...

在golang中如何将已安装的依赖降级处理,比如:将 go-ansible/v2@v2.2.0 更换为 go-ansible/@v1.1.7

在 Go 项目中降级 go-ansible 从 v2.2.0 到 v1.1.7 具体步骤&#xff1a; 第一步&#xff1a; 修改 go.mod 文件 // 原 v2 版本声明 require github.com/apenella/go-ansible/v2 v2.2.0 替换为&#xff1a; // 改为 v…...

Vue 3 + WebSocket 实战:公司通知实时推送功能详解

&#x1f4e2; Vue 3 WebSocket 实战&#xff1a;公司通知实时推送功能详解 &#x1f4cc; 收藏 点赞 关注&#xff0c;项目中要用到推送功能时就不怕找不到了&#xff01; 实时通知是企业系统中常见的功能&#xff0c;比如&#xff1a;管理员发布通知后&#xff0c;所有用户…...

HTTPS证书一年多少钱?

HTTPS证书作为保障网站数据传输安全的重要工具&#xff0c;成为众多网站运营者的必备选择。然而&#xff0c;面对市场上种类繁多的HTTPS证书&#xff0c;其一年费用究竟是多少&#xff0c;又受哪些因素影响呢&#xff1f; 首先&#xff0c;HTTPS证书通常在PinTrust这样的专业平…...

【PX4飞控】mavros gps相关话题分析,经纬度海拔获取方法,卫星数锁定状态获取方法

使用 ROS1-Noetic 和 mavros v1.20.1&#xff0c; 携带经纬度海拔的话题主要有三个&#xff1a; /mavros/global_position/raw/fix/mavros/gpsstatus/gps1/raw/mavros/global_position/global 查看 mavros 源码&#xff0c;来分析他们的发布过程。发现前两个话题都对应了同一…...

手动给中文分词和 直接用神经网络RNN做有什么区别

手动分词和基于神经网络&#xff08;如 RNN&#xff09;的自动分词在原理、实现方式和效果上有显著差异&#xff0c;以下是核心对比&#xff1a; 1. 实现原理对比 对比维度手动分词&#xff08;规则 / 词典驱动&#xff09;神经网络 RNN 分词&#xff08;数据驱动&#xff09…...

CppCon 2015 学习:Simple, Extensible Pattern Matching in C++14

什么是 Pattern Matching&#xff08;模式匹配&#xff09; ❝ 模式匹配就是一种“描述式”的写法&#xff0c;不需要你手动判断、提取数据&#xff0c;而是直接描述你希望的数据结构是什么样子&#xff0c;系统自动判断并提取。❞ 你给的定义拆解&#xff1a; ✴ Instead of …...

标注工具核心架构分析——主窗口的图像显示

&#x1f3d7;️ 标注工具核心架构分析 &#x1f4cb; 系统概述 主要有两个核心类&#xff0c;采用经典的 Scene-View 架构模式&#xff1a; &#x1f3af; 核心类结构 1. AnnotationScene (QGraphicsScene子类) 主要负责标注场景的管理和交互 &#x1f527; 关键函数&…...

Python爬虫(四):PyQuery 框架

PyQuery 框架详解与对比 BeautifulSoup 第一部分&#xff1a;PyQuery 框架介绍 1. PyQuery 是什么&#xff1f; PyQuery 是一个 Python 的 HTML/XML 解析库&#xff0c;它采用了 jQuery 的语法风格&#xff0c;让开发者能够用类似前端 jQuery 的方式处理文档解析。它的核心特…...