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

VS Code C++ 开发环境配置

VS Code 是当前非常流行的开发工具. 本文讲述如何配置 VS Code 作为 C++开发环境. 本文将按照如下步骤来介绍如何配置 VS Code 作为 C++开发环境.

  1. 安装编译器
  2. 安装插件
  3. 配置工作区

第一个步骤的具体操作会因为系统不同或者方案不同而有不同的选择.

环境要求

首先需要立即 VS Code 主要的功能是编辑器, 它并没有编译器能力. 因此我们要想 VS Code 作为 C++开发环境, 我们需要安装好编译器.

  1. VS Code. 如果没有请去官网下载并安装.
  2. C++ 编译器. 根据系统的不同, 可以选择不同的编译器. 读者请根据自己所用系统选择对应的编译器.

Windows 下安装 C++编译器

Windows 下有很多选择, 简单来说有如下选择:

  • 使用原生的编译器: Microsoft Visual Studio. Visual Studio 本身就是一款 IDE, 但是相比起 VS Code 来说, 软件体积很大.
  • 如果是 Windows 11 使用 WSL 来安装 C++编译器. Windows 10 应该也可以, 但是我本地环境是 Windows 11, 所以这里只介绍 Windows 11.
  • 如果本地有 Docker, 则可以用 dev container 方案. 有多个语言开发环境, 或者有多个编译器版本的用户可以考虑使用 dev container 方案. 可以参考我的这篇文章: VS Code Dev Containers 教程: 从基础到进阶配置

Linux 下安装 C++编译器

Linux 下可以使用 gcc, clang. 通过系统的包管理器来安装.

  • 对于 Ubuntu 来说, 可以使用如下命令来安装:

    • gcc: sudo apt install gcc
    • clang: sudo apt install clang
  • 对于 CentOS 来说, 可以使用如下命令来安装:

    • gcc: sudo yum install gcc
    • clang: sudo yum install clang

MacOS 下安装 C++编译器

对于 MacOS 来说, 如果有 Homebrew, 可以使用如下命令来安装:

brew install clang

安装插件

我们主要需要安装如下插件C/C++ Extension Pack.

它是一个扩展包, 包含了 C/C++ 的所有功能. 包括:

  • C/C++
  • C/C++ Themes
  • CMake Tools

配置工作区

我们使用 CMake 来配置我们的项目. 这里我使用一个示例项目来演示如何配置工作区.

这个项目使用 CMake 来构建, 并且使用 CMakePreset.json 来配置工作区. 如果对这两个工具不熟悉, 请参考我的文章: CMake 教程: 从基础到进阶配置

操作步骤如下:

  1. clone 项目:

    git clone https://gitee.com/aronic/cmake-project-2024.git
    
  2. 用 VS Code 打开项目.

  3. 选择 CMake Preset: 按下shift + cmd + p, 输入 CMake: Select a CMake Preset, 选择对应的 preset. 目前只有两个, 分别针对 Linux 和 Windows.

    select preset

  4. 运行构建: 按下shift + cmd + p, 输出CMake: Build, 运行构建.

    cmake build

    构建结果:

    build result

  5. 运行测试: 按下shift + cmd + p, 输出CMake: Run Test, 运行测试.

    run test

    测试结果:

    run test result

上述操作在底层状态栏也可以操作.

status bar

至此, 我们已经完成了 C++开发环境的搭建.

相关帖子

  • CMake 入门教程: 从基础到实践
  • Windows 11 CLion C++ Dev Container开发环境配置
  • Vcpkg 使用全攻略: 支持 VS Code, Visual Studio 和 CLion
  • Dockerfile for C++ Dev Containers

相关文章:

VS Code C++ 开发环境配置

VS Code 是当前非常流行的开发工具. 本文讲述如何配置 VS Code 作为 C开发环境. 本文将按照如下步骤来介绍如何配置 VS Code 作为 C开发环境. 安装编译器安装插件配置工作区 第一个步骤的具体操作会因为系统不同或者方案不同而有不同的选择. 环境要求 首先需要立即 VS Code…...

Web Snapshot 网页截图 模块代码详解

本文将详细解析 Web Snapshot 模块的实现原理和关键代码。这个模块主要用于捕获网页完整截图,特别优化了对动态加载内容的处理。 1. 模块概述 snapshot.py 是一个功能完整的网页截图工具,它使用 Selenium 和 Chrome WebDriver 来模拟真实浏览器行为&am…...

Java TCP 通信:实现简单的 Echo 服务器与客户端

TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输层协议。与 UDP 不同,TCP 保证了数据的顺序、可靠性和完整性,适用于需要可靠传输的应用场景,如文件传输、网页浏览等。本文将基于 Java 实现一个简单的…...

Windows 10 下 SIBR Core (i.e. 3DGS SIBR Viewers) 的编译

本文针对在 Windows 10 上从源码编译安装3DGS (3D Gaussian Splatting)的Viewers 即SIBR Core及外部依赖库extlibs(预编译的版本直接在页面https://sibr.gitlabpages.inria.fr/download.html下载) ,参考SIBR 的官方网站…...

JavaWeb-HttpServletRequest请求域接口

文章目录 HttpServletRequest请求域接口HttpServletRequest请求域接口简介关于请求域和应用域的区别 请求域接口中的相关方法获取前端请求参数(getParameter系列方法)存储请求域名参数(Attribute系列方法)获取客户端的相关地址信息获取项目的根路径 关于转发和重定向的细致剖析…...

【C++】switch 语句编译报错:error: jump to case label

/home/share/mcrockit_3588/prj_linux/../source/rkvpss.cpp: In member function ‘virtual u32 CRkVpss::Control(u32, void*, u32)’: /home/share/mcrockit_3588/prj_linux/../source/rkvpss.cpp:242:8: error: jump to case label242 | case emRkComCmd_DBG_SaveInput:|…...

防火墙虚拟系统实验

拓扑图 需求一 安全策略要求: 1、只存在一个公网IP地址,公司内网所有部门都需要借用同一个接口访问外网 2、财务部禁止访问Internet,研发部门只有部分员工可以访问Internet,行政部门全部可以访问互联网 3、为三个部门的虚拟系统分…...

点云滤波方法:特点、作用及使用场景

点云滤波是点云数据预处理的重要步骤,目的是去除噪声点、离群点等异常数据,平滑点云或提取特定频段特征,为后续的特征提取、配准、曲面重建、可视化等高阶应用打下良好基础。以下是点云中几种常见滤波方法的特点、作用及使用场景:…...

Gradle 配置 Lombok 项目并发布到私有 Maven 仓库的完整指南

Gradle 配置 Lombok 项目并发布到私有 Maven 仓库的完整指南 在 Java 项目开发中,使用 Lombok 可以极大地减少样板代码(如 getter/setter 方法、构造器等),提高开发效率。然而,当使用 Gradle 构建工具并将项目发布到私…...

ArcGIS Pro 基于基站数据生成基站扇区地图

在当今数字化的时代,地理信息系统(GIS)在各个领域都发挥着至关重要的作用。 ArcGIS Pro作为一款功能强大的GIS软件,为用户提供了丰富的工具和功能,使得数据处理、地图制作和空间分析变得更加高效和便捷。 本文将为您…...

【Python · Pytorch】Conda介绍 DGL-cuda安装

本文仅涉及DGL库介绍与cuda配置,不包含神经网络及其训练测试。 起因:博主电脑安装了 CUDA 12.4 版本,但DGL疑似没有版本支持该CUDA版本。随即想到可利用Conda创建CUDA12.1版本的虚拟环境。 1. Conda环境 1.1 Conda环境简介 Conda&#xff1…...

Spring AI:开启Java开发的智能新时代

目录 一、引言二、什么是 Spring AI2.1 Spring AI 的背景2.2 Spring AI 的目标 三、Spring AI 的核心组件3.1 数据处理3.2 模型训练3.3 模型部署3.4 模型监控 四、Spring AI 的核心功能4.1 支持的模型提供商与类型4.2 便携 API 与同步、流式 API 选项4.3 将 AI 模型输出映射到 …...

leetcode:2965. 找出缺失和重复的数字(python3解法)

难度:简单 给你一个下标从 0 开始的二维整数矩阵 grid,大小为 n * n ,其中的值在 [1, n2] 范围内。除了 a 出现 两次,b 缺失 之外,每个整数都 恰好出现一次 。 任务是找出重复的数字a 和缺失的数字 b 。 返回一个下标从…...

Android U 分屏——SystemUI侧处理

WMShell相关的dump命令 手机分屏启动应用后运行命令:adb shell dumpsys activity service SystemUIService WMShell 我们可以找到其中分屏的部分,如下图所示: 分屏的组成 简图 分屏是由上分屏(SideStage)、下分屏(MainStage)以及分割线组…...

面试基础---MySQL 事务隔离级别与 MVCC 深度解析

MySQL 事务隔离级别与 MVCC 深度解析:原理、实践与源码分析 引言 在高并发的互联网应用中,数据库事务的隔离级别是保证数据一致性和并发性能的关键。MySQL 通过多版本并发控制(MVCC)机制实现了不同的事务隔离级别。本文将深入探…...

第十二届蓝桥杯大学A组java省赛答案整理

货物摆放 题目描述 小蓝有一个超大的仓库,可以摆放很多货物。 现在,小蓝有 nn 箱货物要摆放在仓库,每箱货物都是规则的正方体。小蓝规定了长、宽、高三个互相垂直的方向,每箱货物的边都必须严格平行于长、宽、高。 小蓝希望所…...

浅浅初识AI、AI大模型、AGI

前记:这里只是简单了解,后面有时间会专门来扩展和深入。 当前,人工智能(AI)及其细分领域(如AI算法工程师、自然语言处理NLP、通用人工智能AGI)的就业前景呈现高速增长态势,市场需求…...

flink集成tidb cdc

Flink TiDB CDC 详解 1. TiDB CDC 简介 1.1 TiDB CDC 的核心概念 TiDB CDC 是 TiDB 提供的变更数据捕获工具,能够实时捕获 TiDB 集群中的数据变更(如 INSERT、UPDATE、DELETE 操作),并将这些变更以事件流的形式输出。TiDB CDC 的…...

【flutter】TextField输入框工具栏文本为英文解决(不用安装插件版本

输入框长按选项菜单复制、粘贴、剪切、全选部分默认为英文,对于只需要对此部分做中文本地化,不需要考虑其他语言及全局本地化的项目,可以直接自定义一个本地化代理方法进行覆盖,不需要额外下载插件 // 自定义本地化代理 class _C…...

推荐1款OCR的扫描仪软件,无需安装,打开即用!

聊一聊 现在日常办公,很多时候还是需要扫描仪配合。 很多时候需要将文件搜索成PDF再传输。 今天给大家分享一款OCR扫描仪软件。 软件介绍 OCR的扫描仪软件 支持扫描仪共享。 支持WIA、TWAIN、SANE和ESCL驱动程序。 还可以批量多扫描仪配置扫描,支持…...

SpringBoot为什么默认使用CGLIB?

大家好,我是锋哥。今天分享关于【SpringBoot为什么默认使用CGLIB?】面试题。希望对大家有帮助; SpringBoot为什么默认使用CGLIB? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Spring Boot 默认使用 CGLIB(Code Generation Li…...

去除HTML有序列表(ol)编号的多种解决方案

以下是去除HTML有序列表(ol)编号的多种解决方案&#xff1a; <!DOCTYPE html> <html> <head> <style> /* 基础方案&#xff1a;完全移除编号 */ ol.no-number {list-style-type: none; /* 移除默认编号 */padding-left: 0; /* 移除默认缩进 */…...

神经网络|(十三)|SOM神经网络

【1】引言 前序已经对神经网络有了基础认识&#xff0c;今天先学习SOM神经网络。 前序学习文章链接包括且不限于&#xff1a; 神经网络|(十一)|神经元和神经网络-CSDN博客 神经网络|(十二)|常见激活函数-CSDN博客 【2】SOM神经网络 SOM神经网络是一种结构比较简单、但是理…...

IP协议、DNS协议、DHCP协议、Telent协议的记忆总结

首先记忆一下几个协议的端口号 HTTP&#xff1a;超文本传输协议 80 HTTPS&#xff1a;安全传输协议 443 DHCP&#xff1a;动态主机配置协议 67/68 DNS&#xff1a;域名解析协议 53 FTP&#xff1a;文件传输协议 20/21 TFTP&#xff1a;简单文件传输协议 69 TELENT&#xff1a;远…...

Pico 4 Enterprise(企业版)与Unity的交互-有线串流调试篇

入手了Pico 4 E做VR开发&#xff0c;谁知入了天坑...根据官方文档&#xff0c;尝试了串流助手、企业串流、PICO Developer Center&#xff0c;陷入了各种版本问题、环境问题的陷阱。而且Pico4E的OS自24年12开始就不再更新&#xff0c;头盔中预装的企业串流版本也较低&#xff0…...

DeepSeek-R1:使用KTransformers实现高效部署指南

KTransformers作为一个开源框架&#xff0c;专门为优化大规模语言模型的推理过程而设计。它支持GPU/CPU异构计算&#xff0c;并针对MoE架构的稀疏性进行了特别优化&#xff0c;可以有效降低硬件要求&#xff0c;允许用户在有限的资源下运行像DeepSeek-R1这样庞大的模型。 硬件…...

企业日常工作中常用的 Linux 操作系统命令整理

Linux 操作系统命令整理 在企业级运维、开发和日常工作中&#xff0c;Linux 命令是绕不开的核心技能。不论是日志排查、进程管理&#xff0c;还是高效运维优化&#xff0c;掌握这些命令都能让你事半功倍&#xff01;本篇文章整理了自己在日常工作中积累最常用的 Linux 命令&am…...

任务9:交换机基础及配置

CSDN 原创主页&#xff1a;不羁https://blog.csdn.net/2303_76492156?typeblog 一、交换机基础 交换机的概念&#xff1a;交换机是一种网络设备&#xff0c;用于连接多台计算机或网络设备&#xff0c;实现数据包在局域网内的快速交换。交换机基于MAC地址来转发数据包&#x…...

Notepad++ 8.6.7 安装与配置全攻略(Windows平台)

一、软件定位与核心优势 Notepad 是开源免费的代码/文本编辑器&#xff0c;支持超过80种编程语言的高亮显示&#xff0c;相比系统自带记事本具有以下优势&#xff1a; 轻量高效&#xff1a;启动速度比同类软件快30%插件扩展&#xff1a;支持NppExec、JSON Viewer等200插件跨文…...

SpringMVC请求处理流程:DispatcherServlet工作原理

文章目录 引言一、DispatcherServlet概述二、DispatcherServlet初始化过程三、请求接收与处理器匹配四、请求参数绑定与处理器执行五、视图解析与渲染六、异常处理机制总结 引言 SpringMVC框架是Java Web开发中最流行的MVC框架之一&#xff0c;其核心组件DispatcherServlet作为…...