vscode c++环境配置

1.基础软件安装

  1. 安装Visual Studio Code.

  2. 安装C++拓展。点击在vscode界面最左侧的Extensions图标(打开快捷键:ctrl+shift+X),搜索“C/C++”,点击进行安装。
    在这里插入图片描述

  3. 确保已安装gcc. 一般ubuntu系统会预装gcc.在终端窗口中输入如下命令以检验是否已安装gcc。

gcc -v  

如果能够正确打印出当前gcc的版本信息,则表示已经预装。若没有预装,则用如下命令安装安装 GNU 编译器工具和 GDB 调试器:

sudo apt update # 更新软件包源 
sudo apt-get install build-essential gdb

后续vscode找不到命令 g++配置等内容,需要使用上述命令安装gdb

2. 环境配置

通过终端创建一个名为project的文件夹以保存我们的VSCode项目,项目的配置文件位于.vscode文件夹下。在后续教程中,将具体说明在vscode中如何操作生成.vscode 文件夹下的三个配置文件:

tasks.json (compiler build settings) ,负责编译
launch.json (debugger settings),负责调试
c_cpp_properties.json (compiler path and IntelliSense settings),负责更改路径等设置

2.1. 源代码 helloworld.cpp

新建文件helloworld.cpp
在helloworld.cpp粘贴如下代码并保存(Ctrl+S),在vscode左侧栏的Explorer视图中可以看到新建的文件helloworld.cpp。

#include <iostream>
#include <vector>
#include <string>using namespace std;int main()
{vector<string> msg {"Hello", "C++", "World", "from", "VS Code", "and the C++ extension!"};for (const string& word : msg){cout << word << " ";}cout << endl;
}

2.2. 编译 Build helloworld.cpp

创建 tasks.json

在.vscode下创建tasks.json文件,它的作用是告诉 VS Code 如何构建(编译)程序,将调用 g++编译器从源代码创建一个可执行文件。 在上方的主菜单中,选择 终端>运行任务 (Terminal>Configure Default Build Task) ,将出现一个下拉菜单,显示 C++ 编译器的各种预定义编译任务。选择如下。

在这里插入图片描述

上述操作将自动在.vscode文件夹下生成tasks.json文件。当然也可以在Explorer视图中新建文件,将下面代码复制进去,手动生成tasks.json,教程后面的配置文件也均可这样生成。其中代码类似如下:

{"tasks": [{"type": "cppbuild","label": "C/C++: g++ 生成活动文件","command": "/usr/bin/g++","args": ["-fdiagnostics-color=always","-g","${file}","-o","${fileDirname}/${fileBasenameNoExtension}"],"options": {"cwd": "${fileDirname}"},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true},"detail": "调试器生成的任务。"}],"version": "2.0.0"
}

注: VScode支持使用 ${variableName} 语法在配置文件中实现键值字符串的变量替换。tasks.json及后面为调试创建的launch.json文件中变量的具体说明可参考variable reference.

tasks.json中部分关键字说明:

command: 要运行的程序,此处是g++。

args: args 数组包含将传递给 g++ 的命令行参数(必须按照编译器预期的顺序指定)。“ f i l e " 表示当前打开的待编译的活动文件,对它进行编译,并在当前路径 {file}"表示当前打开的待编译的活动文件,对它进行编译,并在当前路径 file"表示当前打开的待编译的活动文件,对它进行编译,并在当前路径{fileDirname}生成与活动文件同名无后缀的可执行文件” f i l e D i r n a m e / {fileDirname}/ fileDirname/{fileBasenameNoExtension}"。在本案例中活动文件指helloworld.cpp,所生成的可执行文件为helloworld。

label: 标签值是将在任务列表中看到的内容;可以随意命名它。

group中的isDefault: 值为true表示支持通过快捷键ctrl+shift+B来执行该编译任务。如果值改为false,也可以从菜单中选择运行: 终端>运行生成任务Terminal>Run Build Task。

执行编译

  1. 回到活动文件helloworld.cpp
  2. 执行tasks.json中定义的编译任务。快捷键ctrl+shift+B或者从菜单中选择运行:终端>运行生成任务(Terminal>Run Build Task)。
  3. 任务开始时,源代码编辑器下方将出现集成终端面板。任务执行完成后,终端会显示编译结果,对于成功的 g++编译,输出类似如下:

在这里插入图片描述

  1. 如下图,点击+按钮将创建一个以当前工作目录(本案例中是helloworld)默认运行的shell终端。输入指令ls查看当前目录下所有文件,可以看到编译生成的可执行文件helloword。

5.终端中输入 ./helloworld ,即可运行可执行文件helloworld

在这里插入图片描述

修改tasks.json

可以修改 tasks.json来满足一些特定需求。比如 将" f i l e " 替换“ {file}"替换“ file"替换{workspaceFolder}/*.cpp”来构建多个 C++ 文件; 将“ f i l e D i r n a m e / {fileDirname}/ fileDirname/{fileBasenameNoExtension}”替换为硬编码文件名(如“helloworld.out”)来修改输出文件名。

2.3 调试Debug helloworld.cpp

创建launch.json

launch.json 文件用于在 Visual Studio Code 中配置调试器。接下来将创建launch.json 文件。

从主菜单中,选择 运行 > 添加配置…Run > Add Configuration…),选择C++ (GDB/LLDB)。 之后将看到展示各种预定义调试配置的下拉列表,选择如下。将自动生成launch.json文件。

在这里插入图片描述

在编辑器中打开launch.json,具体内容类似如下:

{// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "(gdb) 启动","type": "cppdbg","request": "launch","program": "${fileDirname}/${fileBasenameNoExtension}","args": [],"stopAtEntry": false,"cwd": "${fileDirname}","environment": [],"externalConsole": false,"MIMode": "gdb","setupCommands": [{"description": "为 gdb 启用整齐打印","text": "-enable-pretty-printing","ignoreFailures": true},{"description": "将反汇编风格设置为 Intel","text": "-gdb-set disassembly-flavor intel","ignoreFailures": true}]}]
}

launch.json中部分关键字说明:

program: 指带调试的程序,其值对应程序的路径。在这里设置为" f i l e D i r n a m e / {fileDirname}/ fileDirname/{fileBasenameNoExtension}",在本案例中对应“helloworld/helloworld”.

stopAtEntry: 默认情况下,C++拓展不会向源代码添加任何断点,stopAtEntry 值设置为 false。 将stopAtEntry值更改为 true 将使调试器在开始调试时停止在 main 方法上。

3、C/C++ 配置

如果你想更多地控制 C/C++ 扩展,你可以创建一个 c_cpp_properties.json 文件,它允许你更改设置,例如编译器的路径、包含路径、C++ 标准(默认为 C++17),等等。 您可以通过从命令面板 (Ctrl+Shift+P) 运行命令 C/C++: Edit Configurations (UI) 来查看 C/C++ 配置 UI。

如果您的程序包含不在您的工作区或标准库路径中的头文件,您只需要修改包含路径Include path 设置。Visual Studio Code 将这些设置放在.vscode/c_cpp_properties.json 中。如果您直接打开该文件,它应该如下所示:

{"configurations": [{"name": "Linux","includePath": ["${workspaceFolder}/**"],"defines": [],"compilerPath": "/usr/bin/gcc","cStandard": "c11","cppStandard": "c++17","intelliSenseMode": "clang-x64"}],"version": 4
}

【工程环境】利用VSCode + CMakeList完成C/C++项目工程搭建_vscode创建c++项目-CSDN博客

详解Linux下使用vscode编译运行和调试C/C++ - 知乎 (zhihu.com)

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

苹果macOS 14.4.1正式发布:修复无法使用外接显示器USB集线器问题

3 月 26 日消息&#xff0c;苹果今日向 Mac 电脑用户推送了 macOS 14.4.1 更新&#xff08;内部版本号&#xff1a;23E224&#xff09;&#xff0c;本次更新距离上次发布隔了 18 天。 需要注意的是&#xff0c;因苹果各区域节点服务器配置缓存问题&#xff0c;可能有些地方探测…

AQS源码分析

前言 AbstractQueuedSynchronizer是抽象同步队列&#xff0c;其是实现同步机器的基础组件&#xff0c;并发包中的锁的底层就是使用AQS实现的。AQS中 维护了一个volatile int state&#xff08;代表共享资源&#xff09;和一个FIFO线程等待队列&#xff08;多线程争用资源被阻塞…

10个你必须知道的浏览器指纹检测工具,保护你的隐私安全

在当前的数字时代&#xff0c;个人隐私保护变得越来越重要&#xff0c;特别是对于互联网用户来说。有一种叫做“浏览器指纹”的技术&#xff0c;它能悄悄收集我们使用的浏览器和设备的各种细节信息。这本是为提供个性化服务&#xff0c;但对那些需要在不同平台同时管理多个账号…

day5-QT

widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include<QFontDialog> //字体对话框类 #include<QFont> //字体类 #include<QMessageBox> //消息对话框类 #include<QColorDialog> //颜色对话框类 #include<QColor> //颜…

【嵌入式机器学习开发实战】(七)—— 政安晨:通过ARM-Linux掌握基本技能【环境准备:树莓派】

ARM-Linux是一种针对ARM架构的操作系统&#xff0c;它的设计目标是在低功耗、低成本的硬件平台上运行。ARM-Linux可以运行在多种ARM处理器上&#xff0c;包括树莓派。 树莓派&#xff08;Raspberry Pi&#xff09;是一款基于ARM架构的单板计算机&#xff0c;由英国的树莓派基金…

吴恩达2022机器学习专项课程(一) 4.1 梯度下降

问题预览 1.梯度下降算法的作用是&#xff1f; 2.梯度下降如何计算线性回归的成本函数&#xff1f; 3.所有的成本函数都是一个形状吗&#xff1f; 4.在非凸形状中&#xff0c;梯度下降的更新过程是&#xff1f; 5.在非凸形状中&#xff0c;不同的初值对最小化成本函数的影响是…

部署云原生边缘计算平台kubeedge

文章目录 1、kubeedge架构2、基础服务提供 负载均衡器 metallb2.1、开启ipvc模式中的strictARP2.2、部署metalb2.2.1、创建IP地址池2.2.2、开启二层转发&#xff0c;实现在k8s集群节点外访问2.2.3、测试 3、部署cloudcore3.1、部署cloudcore3.2、修改cloudcore的网络类型 4、部…

STM32学习笔记(7_2)- ADC模数转换器代码

无人问津也好&#xff0c;技不如人也罢&#xff0c;都应静下心来&#xff0c;去做该做的事。 最近在学STM32&#xff0c;所以也开贴记录一下主要内容&#xff0c;省的过目即忘。视频教程为江科大&#xff08;改名江协科技&#xff09;&#xff0c;网站jiangxiekeji.com 本期开…

HTML静态网页成品作业(HTML+CSS+JS)——中华美食八大菜系介绍(1个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;使用Javacsript代码实现图片轮播切换&#xff0c;共有1个页面。 二、…

实名羡慕!这些人已经用上了Sora

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 新建了人工智能中文站https://ai.weoknow.com 每天给大家更新可用的国内可用chatGPT资源 发布在https://it.weoknow.com 更多资源欢迎关注 Sora 第三方口碑出炉&#xff0c;或许带给艺术家们最大的好处是&#xff1a;…

KingSCADA|如何实现文本显示设备的实时通讯状态?

哈喽,你好啊,我是雷工! 在SCADA项目中,有些要求在界面上实时显示SCADA系统与设备的实时通讯状态,来及时了解PLC或其他设备与SCADA系统的通讯状态是否正常,以及简单的通讯异常分析,在KingSCADA中该如何实现通讯状态的文本显示呢? 接下来用简单的样例介绍KingSCADA如何实…

学成在线项目学习

技术栈 学成在线服务端基于Spring Boot构建&#xff0c;采用Spring Cloud微服务框架。 持久层&#xff1a;MySQL、MongoDB、Redis、ElasticSearch 数据访问层&#xff1a;使用Spring Data JPA 、Mybatis、Spring Data Mongodb等 业务层&#xff1a;Spring IOC、Aop事务控制、S…