用VSCode开发C++项目

2023-05-16

写在前面

最近在新学C++,又不想用VisualStudio那么庞大的IDE,VS体量稍微有那么点笨重(主要还是因为穷,没钱换电脑,目前的电脑开个VS要个两三分钟,所以就懒得用VS了。嘻嘻!)。下面步入正题。
首先得明白VS只是一个编辑器,类似于记事本,本身是不能够进行任何程序语言开发的。只不过这个记事本可以安装插件,可以和命令行程序结合起来使用,使得它可以进行开发。那么在进行相应语言开发时自然少不了一顿相关配置操作。废话不多说,上步骤

准备工作

一、下载编译器

我这里使用的是mingw编译器。可参考VSCODE官方文档在Windows上使用GCC。

1、下载和安装MINGW编译器转至MSYS2网站。
我这里已经安装好了,就不再演示了。一定要记住安装路径,配置环境变量的时候会用上。一定要按照MYSY2网站上的安装提示安装,那些插件不知道哪些有用的就都安装上。

2、 配置环境变量
将Mingw-w64文件夹下的bin文件夹加入到系统环境变量中。下面以win10系统为例。

  • 打开设置-系统
    在这里插入图片描述

  • 选择关于-高级系统设置
    在这里插入图片描述

  • 点击环境变量
    在这里插入图片描述

  • 选择Path-编辑
    在这里插入图片描述

  • 点击新建,将mingw安装目录下的mingw64的bin文件夹路径添加到path中。
    在这里插入图片描述

  • 点击确定,就完成了。

  • 最后确定一下mingw是否成功安装,命令行输入

g++ --version
gdb --version

出现如下信息,则安装成功。
在这里插入图片描述

二、下载VSCODE

  • VSCODE已安装好,请到官网下载最新版

三、安装VSCODE C++相关插件

  • 点击VSCODE左侧扩展插件图标,在出现的搜索栏中输入“C++”,选择“C/C++”。
    在这里插入图片描述

四、新建工程

1、新建项目文件夹及主程序

  • 在磁盘空间中新建一个test文件夹,右击选择用VSCODE打开。
  • 在test下建立4个文件夹,如下图:
    在这里插入图片描述
    (build–放编译文件、include–放.h头文件、–lib放库文件、src–放源文件)
  • 在src文件夹下新建main.cpp输入helloworld程序。
#include <iostream>
using namespace std;

int main()
{

    cout<<"Hello!World!"<<endl;
    system("pause");
    return 0;
}

2、创建.vscode文件夹

.vscode文件夹包括三个json类型文件,分别为c_cpp_properties.json文件(编译器路径设置和智能提示设置)、task.json文件(编译说明)、launch.json文件(调试设置)。

创建c_cpp_properties.json

  • 按快捷键Ctrl+Shift+P打开命令搜索面板,选择“C/C++:编辑配置(UI)”,进入配置UI界面,并自动生成c_cpp_properties.json文件。

在这里插入图片描述

  • 编译器路径选择刚刚安装的g++.exe的路径,智能提示模式选择gcc-x64。如下图:
    在这里插入图片描述
    在这里插入图片描述
  • 在c_cpp_properties.json中添加includePath。如果不知道有哪些路径就将文章编译器安装路径下所有include文件夹全追加进去。
  • c_cpp_properties.json

创建Task.json文件

  • 点击工具栏–终端–配置默认生成任务–选择”C/C++:g++.exe生成活动文件“,以生成task.json文件。
    在这里插入图片描述
  • 常用的Task.json文件如下。label为任务名,一般设置为build,command即选择什么编译器进行编译,一般选gcc或g++,args为编译的时候用到的参数,详细参数说明参考gcc/g++命令使用及编译原理一。
{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "cppbuild",
			"label": "C/C++: g++.exe 生成活动文件",
			"command": "G:\\Tools\\Compiler\\MSYS2\\msys64installtion\\mingw64\\bin\\g++.exe",
			"args": [
				"-g",
				"${file}",
				"-fexec-charset=GBK",   // 处理mingw中文编码问题
                "-finput-charset=UTF-8",// 处理mingw中文编码问题,没有这俩中文显示会乱码
				"-o",
				"${fileDirname}\\${fileBasenameNoExtension}.exe"
			],
			"options": {
				"cwd": "${fileDirname}"
			},
			"problemMatcher": [
				"$gcc"
			],
			"group": {
				"kind": "build",
				"isDefault": true
			},
			"detail": "编译器: G:\\Tools\\Compiler\\MSYS2\\msys64installtion\\mingw64\\bin\\g++.exe"
		}
	]
}

创建launch.json文件

  • 点击VSCODE左侧工具栏的调试按钮,点击“创建launch.json文件”。
    在这里插入图片描述
  • 选择“C/C++(GDB/LLDB)”
    在这里插入图片描述
  • 以下是我们常用到的launch.json文件。其中program参数,为生成的可执行文件名,一定要与tasks.json文件中指定生成的文件名相同。还有一个是preLaunchTask,一般也要与tasks.json文件中的label一致,一般都是build。如果采用CMakeLists.txt的方法,preLaunchTask参数就不用指定了,删除这个参数就行。但是program参数需要指定,指定的方式为绝对路径名。关于CMakeList的使用方法我还没搞懂,得再研究。
{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "g++.exe - 生成和调试活动文件", // 配置名称,将会在启动配置的下拉菜单中显示
            "type": "cppdbg",                     // 配置类型,这里只能为cppdbg
            "request": "launch",                  // 请求配置类型,可以为launch(启动)或attach(附加)
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",// 将要进行调试的程序的路径
            "args": [],                          // 程序调试时传递给程序的命令行参数,一般设为空即可
            "stopAtEntry": false,                 // 设为true时程序将暂停在程序入口处,一般设置为false
            "cwd": "${fileDirname}",             // 调试程序时的工作目录,一般为${workspaceRoot}即代码所在目录
            "environment": [],
            "externalConsole": true,            // 调试时是否显示控制台窗口,一般设置为true显示控制台
            "MIMode": "gdb",
            "miDebuggerPath": "G:\\Tools\\Compiler\\MSYS2\\msys64installtion\\mingw64\\bin\\gdb.exe",// miDebugger的路径,注意这里要与MinGw的路径对应
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "C/C++: g++.exe 生成活动文件"// 调试会话开始前执行的任务,一般为编译程序,c++为g++, c为gcc
        }
    ]
}

3、运行生成任务

第一次运行程序需先运行生成任务,生成可执行文件。具体操作如下:

  • 点击main.cpp,将其置于vscode主界面,使其成为活跃文件。
  • 点击工具栏 终端–运行生成任务。
  • 出现如下提示即为生成成功。
    在这里插入图片描述

4、调试程序

同样需要将main.cpp置为活动文件,按F5或点击左侧小虫子图标。同VS一样打断点,在左侧监视窗口添加表达式以监视变量的值。
在这里插入图片描述

5、完成

至此VSCODE调试单个C++文件已成功。

五、多文件调试(引入自定义头文件)

  • 在include文件夹新建头文件“click.h”,代码如下:
#include<string>
using namespace std;
string record();
  • 在lib文件夹下新建实现文件“click.cpp”,代码如下:
#include "click.h"
#include <string>
using namespace std;

string record()
{ 
    string str="中秋快乐!";
    return str;
}
  • 将main.cpp文件改为如下:
#include <iostream>
#include "click.h"
using namespace std;

int main()
{

    cout<<"Hello!World!"<<endl;
    string str=record();
    cout<<str<<endl;
    system("pause");
    return 0;
}
  • 调试。会发现main.cpp中“click.h文件找不到。
    在这里插入图片描述

  • 原因有二:
    一、c_cpp_properties.json文件中includePath未加入include文件夹的头文件包含路径,将"${workspaceFolder}/include/**"追加入includePath中。
    二、task.json文件中,未将include文件夹链接入编译,同时需将引用的头文件的源文件即cpp文件一起加入编译,即在args中加入如下两句:

				"-I","${workspaceFolder}/include",
				"${workspaceFolder}/lib/click.cpp",

追加后的task.json

{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "cppbuild",
			"label": "C/C++: g++.exe 生成活动文件",
			"command": "G:/Tools/Compiler/MSYS2/msys64installtion/mingw64/bin/g++.exe",
			"args": [
				"-g",
				"${file}",
				"-fexec-charset=GBK",   // 处理mingw中文编码问题
                "-finput-charset=UTF-8",// 处理mingw中文编码问题,没有这俩中文显示会乱码
				"-I","${workspaceFolder}/include",
				"${workspaceFolder}/lib/click.cpp",
				"-o",
				"${fileDirname}\\${fileBasenameNoExtension}.exe"
			],
			"options": {
				"cwd": "G:/Tools/Compiler/MSYS2/msys64installtion/mingw64/bin"
			},
			"problemMatcher": [
				"$gcc"
			],
			"group": {
				"kind": "build",
				"isDefault": true
			},
			"detail": "编译器: G:/Tools/Compiler/MSYS2/msys64installtion/mingw64/bin/g++.exe"
		}
	]
}
  • 切换到main.cpp,程序完美运行。如此,方能进行自定义头文件的引用。
    在这里插入图片描述

六、附录(路径表示说明)

在vscode中定义了一些变量,在配置任务脚本时,可能会用到。本文以launch.json脚本为例,介绍各个变量的含义。

假设当前workspace的路径为:“C:\Users\admin\Desktop\test”,workspace文件夹下的结构如下(+表示下一层):

C:\Users\admin\Desktop\test

+.vscode

++tasks.json

++launch.json

+main.cpp

${workspaceFolder} :表示当前workspace文件夹路径,也即C:\Users\admin\Desktop\test

${workspaceRootFolderName}:表示workspace的文件夹名,也即test

${file}:文件自身的绝对路径,也即C:\Users\admin\Desktop\test.vscode\launch.json

${relativeFile}:文件在workspace中的路径,也即.vscode\launch.json

${fileBasenameNoExtension}:当前文件的文件名,不带后缀,也即launch

${fileBasename}:当前文件的文件名,launch.json

${fileDirname}:文件所在的文件夹路径,也即C:\Users\admin\Desktop\test.vscode

${fileExtname}:当前文件的后缀,也即.json

${lineNumber}:当前文件光标所在的行号

${env:PATH}:系统中的环境变量

参考:1、Visual Studio Code (vscode) 配置C、C++环境/编写运行C、C++(Windows)【真正的小白版】
2、使用vscode创建C++工程
3、Windows下用VScode编写C++程序如何添加并应用自定义头文件
4、VSCode launch.json中的各种替换变量的意思 ${workspaceFolder} ${file} ${fileBasename} ${fileDirname}等
5\VSCODE官方文档—在MinGW上使用GCC(Using GCC with MinGW)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用VSCode开发C++项目 的相关文章

  • 在vue3中使用百度地图

    1 在vue项目public文件夹下的index html中引入script 在需要使用百度地图的地方直接使用 代码如下
  • Linux 以root用户登录无法启动VSCode

    Linux 以root用户登录无法启动VSCode 环境 Ubuntu18 04 VSCode 复现 以root用户登录Ubuntu后单机VSCode图标打开VSCode BUG 无法打开VSCode 原因 VSCode默认不允许以root
  • VScode使用PlatformIO IDE时PIO Home一直loading的问题

    近来刚接触 Arduino 想做个小项目 网上都都说 Arduino 自带的IDE不人性化 推荐的是用 VScode搭配 PlatformIO 但是这个插件非常不稳定 各种坑 有的时候安装 Library 点击了 Add 以后会一直转 等半
  • VsCode 常用好用插件/配置+开发Vue 必装的插件

    一 VsCode 常用好用插件 1 实时刷新网页的插件 LiveServer 2 open in browser 支持快捷键与鼠标右键快速在浏览器中打开html文件 支持自定义打开指定的浏览器 包括 Firefox Chrome Opera
  • VSCode远程连接ubuntu服务器

    1 打开VSCode 安装插件 安装插件 汉化 方法如下 重启之后界面就都是中文了 因为我之前弄过了 如果你的已经是中文了 可以省去这一步 安装remote development插件 如下图 用于远程连接服务器 安装好之后 左侧多了一个
  • Windows下修改VSCode工作区存储目录workspaceStorage

    VSCode会将每个工作区的一些配置 扩展 缓存等保存在一个默认的目录 在Windows下 此默认目录为 AppData Code User workspaceStorage 当存在多个工作空间或扩展时 需要使用大量的磁盘空间 而VSCod
  • VsCode远程调试服务器python代码(解决相对路径相关问题)

    1 首先在本地使用VsCode调试python代码 可参考链接 VSCode启动Debug模式调试Python文件 2 vscode远程连接服务器 调试python文件 可参考链接 一文掌握vscode远程调试python代码 3 调试时
  • VSCode连接WSL2及VMware,WSL2安装GUI应用

    一 VScode 连接WSL2 参考文章 巨硬官方文档 知乎大佬教程 知乎大佬教程2 1 开启WSL2 支持 使用管理员权限的 Shell 才能安装 WSL2 按 Win X 找到 Windows PowerShell 管理员 并复制执行命
  • Visual Studio Code 1.35更新:远程开发终于来啦

    前段时间大家可能看过一个新闻 微软为VSC开发一款名为Remote Development的扩展程序 可以让我们使用本地VSC开发和调试远程机器上的代码 这个功能对于我这个不会使用vim等linux工具的人来说 简直是一个重大消息 可惜的是
  • 怎么用vscode进行单步调试

    1 修改launch文件 version 0 2 0 configurations name gdb Launch type cppdbg request launch program workspaceFolder build my cm
  • vscode远程连接失败解决方案

    vscode远程连接在更新了配置文件或者密钥信息更新后可能会出现远程连接失败 过程试图写入的管道不存在 该问题的主要有以下三种解决方案 1 在vscode SSH扩展设置中配置config文件的绝对位置 该文件一般位于 ssh文件夹中 C
  • vscode实现文件单步调试保姆级教程

    第一步 第二步 第三步 第四步 第五步 第六步 第七步 第八步 第九步 第十步 点击终端 gt 配置任务 第十一步 第十二步 第十三步 第十四步 设置完毕 可以在源程序打断点按F5执行了
  • Visual Studio Code 的安装教程和配置C语言环境(详解版)

    最近想装一个VS Code 来写C C 程序 但是看了网上的很多教程发现并不是那么的好 大部分都尝试失败了 摸索了很久找到了一个比较可靠的方法 目录 一 Visual Studio Code 的安装教程 二 接下来就是C语言的环境配置 三
  • vscode使用手册

    VS Code Visual Studio Code 是一款轻量级 跨平台的源代码编辑器 支持语法高亮 自动补全 调试 Git 版本控制等功能 下面是一些使用 VS Code 的基本操作 安装和启动 在官网上下载并安装 VS Code 打开
  • TensorFlow.js预测鸢尾花种类

    源码连接 TensorFlow js实现鸢尾花种类预测 机器学习文档类资源 CSDN下载 一 加载IRIS数据集 创建index html入口文件 跳转到script主文件 在script js文件夹中利用预先准备好的脚本生成鸢尾花数据集
  • vscode 内置(自带)功能使用

    vscode 搜索 功能 使用正则表达式 参考文章 Justice23 参考文章 熟悉的新风景 转义字符 匹配内容 t tab r 回车符号 r n 换行符号 n 特殊符号转义 如
  • VSCode 代码高亮 变量类型、函数名、类名没有颜色 - 设置主题即可

    https zhuanlan zhihu com p 630401039 之前应该设置主题了 但不知道为啥C 里面只有 int 有高亮 其他像 cv Mat 函数名 类名都没有颜色 解决方案是重新设置一下主题 File preference
  • VScode配置mingw C语言环境变量

    C语言IDE VScode VScode是个人比较喜欢的一款IDE软件 鄙人曾同时在VScode软件中运行三个终端 开发Python Golang和C语言 下载地址如下 code visualstudio com VScode配置mingw
  • vscode插件离线安装地址

    因内网开发 编辑器不可联网 插件需要离线安装 vscode插件商店 Extensions for Visual Studio family of products Visual Studio Marketplace
  • vscode插件离线安装地址

    因内网开发 编辑器不可联网 插件需要离线安装 vscode插件商店 Extensions for Visual Studio family of products Visual Studio Marketplace

随机推荐

  • 【gcc】gcc优化等级 -O1 -O2 -O3 -Os -Ofast -Og|gcc关闭优化

    目录 优化等级 O1 O2 O3 Os Ofast Og cmake 生成 debug和 release 版 Cmake设置优化等级 Debug和Release 方案 About table About question gcc g 43
  • 嵌入式期末复习题(二)

    考试题型 一 选择题 每小题2分 xff0c 15题 xff0c 共30分 二 填空题 每题2分 xff0c 10题 xff0c 共20分 三 简答题 每题5分 xff0c 4题 xff0c 共20分 四 分析题 每题5分 xff0c 3题
  • 嵌入式期末复习题(三)

    1嵌入式系统的定义 嵌入式系统是用于控制 监视或辅助操作机器和设备的装置 嵌入式系统是以应用为中心 xff0c 以计算机技术为基础 xff0c 软硬件可裁剪 xff0c 适应应用系统对功能 可靠性 成本 体积和功耗等严格要求的专用计算机系统
  • 解决Ubuntu 网速慢的问题

    Ubuntu 网速慢 xff0c 主要是把时间浪费在域名解析上 我们可以用dnsmasq解决这问题 具体如下 xff1a 1 安装dnsmasq 命令 sudo apt get install dnsmasq 2 编辑dnsmasq的配置文
  • C++中的char,char*,char[]

    char C 43 43 中的char是字符的意思 xff0c 可以用例如 39 a 39 来表示 xff0c 每个字符串string都是由很多个单独的字符char组成 char char 是一个指针 xff0c 例如 xff1a char
  • VSCode 运行C++程序

    0 省流自强版 本方法来自以下两个参考链接 xff0c 可自行参照去执行安装 xff1a 1 https code visualstudio com docs languages cpp 2 https www youtube com wa
  • 了解CV和RoboMaster视觉组(四)视觉组使用的硬件

    NeoZng neozng1 64 hnu edu cn 4 视觉组接触的硬件 虽然别人总觉得视觉组就是整天对着屏幕臭敲代码的程序员 xff0c 实际上我们也会接触很多的底层硬件与传感器 xff0c 在使用硬件的同时很可能还需要综合运用其他
  • VINS-RGBD运行指令

    创建工程VINS RGBD catkin ws 将代码放入src文件夹当中 git clone https github com STAR Center VINS RGBD 进行编译 cd VINS RGBD catkin ws catki
  • ubuntu16.04安装realsense D435i驱动及固件

    安装Realsense SDK xff1a 1 下载source并且确定git版本 xff1a 1 git clone https github com IntelRealSense librealsense xff08 下载源 xff09
  • ROS入门(七)——仿真机器人三(Gazebo+Xacro)

    所用的学习链接 xff1a 奥特学园 ROS机器人入门课程 ROS理论与实践 零基础教程P271 277 以上视频笔记见http www autolabor com cn book ROSTutorials 前文参考 ROS入门 五 仿真机
  • ROS入门(九)——机器人自动导航(介绍、地图、定位和路径规划)

    所用的学习链接 xff1a 奥特学园 ROS机器人入门课程 ROS理论与实践 零基础教程P289 314 以上视频笔记见http www autolabor com cn book ROSTutorials 一 介绍 官方链接 xff1a
  • Keil工程添加源文件和头文件(.c和.h)的方法

    在此把Keil项目添加源文件和头文件的方法做个记录 xff1a 1 Keil项目添加源文件和头文件的方法之一 1 1 右键点击项目名称 xff0c 弹出菜单中选择Add Group xff0c 我们把所有需要添加的源文件都放在这个Group
  • 漂亮的html表格

    原文 xff1a http www textfixer com resources css tables php css table01 一个像素边框的表格 xff1a Info Header 1 Info Header 2 Info He
  • SIPp之认证注册

    欢迎大家转载 xff0c 为保留作者成果 xff0c 转载请注明出处 xff0c http blog csdn net netluoriver xff0c 有些文件在资源中也可以下载 xff01 如果你没有积分 xff0c 可以联系我 xf
  • HTTP:DIGEST认证的请求和响应报文

    以下是HTTP DIGEST认证的请求和响应报文的例子 xff0c 供以后参考 IE first request GET boe checkedServlet HTTP 1 1 Accept image gif image jpeg ima
  • Linux配置篇 | Ubuntu配置apt镜像源

    以下以 Ubuntu18 04 LTS 为例 xff0c 也适用于 Ubuntu 其他版本 一 修改apt镜像源 xff08 1 xff09 备份apt配置文件 xff1a cp etc apt sources list etc apt s
  • STC89C52RC单片机额外篇 | 04 - 认识头文件<intrins.h>与_nop_函数

    1 lt intrins h gt 头文件 头文件 lt intrins h gt 在我们51单片机日常开发中经常使用 xff0c 特别是 nop 函数 xff0c 以下是 lt intrins h gt 的内容 xff1a span cl
  • HTTP协议详解 - 通过C++实现HTTP服务剖析HTTP协议

    前言 C C 43 43 程序员一般很少会接触到HTTP服务端的东西 xff0c 所以对HTTP的理解一般停留在理论 本文章实现通过C 43 43 实现了一个http服务 xff0c 可以通过代码对HTTP协议有更深的理解 xff0c 并且
  • GIT 中如何打标签

    前言0x1 GIT 标签常用指令0x2 轻量标签0x3 附注标签0x4 远程仓库中的标签 前言 在我们开发的过程中 xff0c 可能经过多次 commit 提交才会确定一个版本 xff0c 那么除了用 commit comments 来标识
  • 用VSCode开发C++项目

    写在前面 最近在新学C 43 43 xff0c 又不想用VisualStudio那么庞大的IDE xff0c VS体量稍微有那么点笨重 xff08 主要还是因为穷 xff0c 没钱换电脑 xff0c 目前的电脑开个VS要个两三分钟 xff0