C++学习之路:从头搞懂配置VScode开发环境的逻辑与步骤

发布于:2025-03-26 ⋅ 阅读:(25) ⋅ 点赞:(0)

编辑器与IDE

上一篇博客已经介绍过了C++程序的一个编译流程,从这篇文章开始进行编程的实验。
 正所谓“工欲善其事,必先利其器”,有很多小白入门时大把的时间都被浪费在配置和安装开发环境上,因此这篇博客将从易于理解的角度来讲讲怎么样配好一个C++的开发环境,目标是一次学习永远记忆。
 其实写一个能运行的程序是一个很简单的事情,如果你用的是windows系统可以直接创建一个扩展名为.cpp的文件,然后用自带的文本编辑器进行编辑,然后在终端使用g++编译器对其进行编译就能得到一个能运行的.exe文件了,因此C++开发环境只需要文本编辑器+编译器即可完成搭建。
 但事实上,为了更舒服与高效地写程序,我们还需要许多额外的功能,例如自动补全、语法纠错、程序调试 等。单个文本编辑器(例如vscode)不具备这样的功能,因此还需要安装额外的一些插件来配合使用,这就是这章主要讲的内容如何在vscode上安装与配置好C++开发需要的插件
 但对于IDE(集成开发环境)来说,这些插件功能与文本编辑器本身已经融为一体,不需要额外的安装配置,使用起来比vscode轻松简单很多,常见的IDE有,DevC++、VS、CLion,Eclipse等。但为什么还需要劳心费力地教大家学习使用vscode呢?

  1. 首先,vscode全开源,市面上大部分的IDE都需要收费与许可证。
  2. 其次,vscode可以在Windows也可以在Linux上使用,一次学习终身有用。
  3. 最重要的是vscode支持多种多样的插件与扩展功能,例如ai代码补全等,拥有传统IDE不具备的灵活性。
  4. 最后一点就是帅!能显得自己很专业。

基于vscode的C++开发环境配置

1. 下载vscode、浅尝编译。

做这一步前,请先确认你安装了MinGW编译环境
点击这个链接进入官网进行下载,完成之后进行安装,这里要注意,安装路径不要出现中文!!!
在这里插入图片描述
安装好后我们打开vscode:
在这里插入图片描述
选做,只看就行)此时界面一片漆黑,还有很多看不懂的外国语。我们先不着急进行汉化,来浅尝一下vscode作为文本编辑器的功能,新建一个hello_world.cpp文件,并在其中写入经典开局代码:

#include<iostream>
int main()
{
    std::cout << "hello world!\n" <<endl;
    return 0;
}

明摆着告诉你,上面的代码里有些问题(自己去发现)。但是在vscode中显示的效果如下:
在这里插入图片描述
 我们可以发现,vscode作为一个文本编辑器,对于编程自带高亮功能,这表明它其实是专门设计用来编程的一个文本编辑器。并且重要的是,原生的vscode对于错误代码并没有纠错能力更不要说自动补全功能了。
 根据前面的知识,我们可以使用终端运行g++编译器来对上面的代码进行编译:
点击Terminal-->New Terminal在vscode中创建一个终端。
在这里插入图片描述
在终端中输入g++ --version查询一下编译器是否存在以及是否好用。如果显示你没有安装编译器,那么可以自行百度一些MinGW(推荐)或者MSVC的安装,十分简单。
在这里插入图片描述
输入g++编译指令,对代码进行手工编译:

g++ hello_world.c -o hell_world

在这里插入图片描述
如果你代码没改好,那么编译就会报错,显示endl前少了作用域std:: 补上这个部分,运行编译:
在这里插入图片描述
发现不再报错,同时我们的文件夹下多了一个hello_world.exe文件,输入:

.\hello_world.exe

执行结果如下,果然输出了hello_world!语句
在这里插入图片描述

番外篇

g++编译器利用-c选项可以只编译出.o文件,再通过手工链接的方式将.o·文件链接为.exe可执行文件。
在这里插入图片描述

2. 安装插件,赋能编程。

点击最左边的扩展,搜索扩展插件:
在这里插入图片描述
C/C++编程安装两个插件即可:

  1. Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code(汉化包)
  2. C/C++ Extension Pack(这个包包含了C/C++、C\C++Themes、CMake Tools
    安装完重启后,如下图:
    在这里插入图片描述
    这下我们发现,vscode开始自动纠错了,并且补全等功能也有了,仿佛似乎它已然成为了一个IDE。并且注意右上角新出现的三角形
    在这里插入图片描述
    点击后发现有两个选项:
    在这里插入图片描述
    点击运行C/C++文件,在随后的选项框中选择我们需要的编译器g++:
    在这里插入图片描述
     这样,我们就可以实现代码一键运行功能了。
    总结:安装插件后,vscode得以实现自动纠错、代码补全、一键编译、一键调试等功能。

3. 各种json文件的作用。

在Visual Studio Code(VSCode)中,.vs文件夹是一个用于存储与项目相关的配置和临时数据的目录。下面介绍几个重要的.json文件。

c_cpp_properties.json

这个文件主要用来配置C/C++编辑器的自动补全和索引等功能。按下 F1 调出面板,输入 C/C++,选择编辑配置(UI)。
首先找到编译器路径选项,将编译器地址放入:
在这里插入图片描述
然后再配置IntelliSense模式,IntelliSense是代码补全工具,将其设置为与编译器兼容的格式,例如这里是gcc-x64。
在这里插入图片描述
接下来再配置自动补全的包含路径:包含路径就是#include文件所在的路径,这里面默认有了一个workspaceFolder,代表当前目录下的所有文件,如果使用的库不在当前的工作目录下则需要在这里手动添加进去。
在这里插入图片描述
一般情况下,标准库的文件编译器是会自动去寻找的,但有时候标准库文件会提示找不到库,那么就需要在这里手动地把库头文件路径包含进去了。具体查询方式如下:

g++ -v -x c++ -E -

在这里插入图片描述
将后面这几行粘贴进去(注意去掉前面的空格)。
最后再设置一下C++标准:
在这里插入图片描述
然后我们可以发现,.vs文件夹下多了个文件:c_cpp_properties.json

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "windowsSdkVersion": "10.0.22621.0",
            "cStandard": "c17",
            "cppStandard": "c++17",
            "intelliSenseMode": "windows-gcc-x64",
            "compilerPath": "\"D:\\mingw64\\bin\\g++.exe\""
        }
    ],
    "version": 4
}

其实就是把我们在窗口内配置的信息转成了json代码。

task.json

当我们选择了编译器后(点击一键运行),项目配置文件夹.vs下就会生成一个task.json文件。这个文件的内容如下:

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

task.json文件主要是用来指导编译过程的,其中很重要的两条是:

"command": "D:\\mingw64\\bin\\g++.exe" //这条指定了用哪个编译器。

"args": [ //这条指定了编译指令的参数
                "-fdiagnostics-color=always",
                "-g", //启用调试学习
                "${file}", //源文件名
                "-o", //输出文件
                "${fileDirname}\\${fileBasenameNoExtension}.exe" //输出文件名
            ]

launch.json

launch.jsons是调试配置文件,位于.vscode隐藏文件夹下。生成调试配置文件launch.json的方法很简单:打开vscode左边栏的运行于调试即可创建。
在这里插入图片描述
然后选择使用的调试器即可完成创建:
在这里插入图片描述
然后可以选择一种调试器的模板:
在这里插入图片描述
但是,这里我们需要对launch.json模板修改,代码如下:

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) 启动",
            "type": "cppdbg",
            "request": "launch",
            "program": "输入程序名称,例如 ${workspaceFolder}/a.exe",//替换成task.json里生成的可执行文件名字
            "args": [], //传递给.exe的参数
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "/path/to/gdb",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "将反汇编风格设置为 Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ]
            "preLaunchTask": "C/C++: gcc.exe 生成活动文件" //换成task.json的label名
        }
    ]
}

各个参数的意义:
基础参数‌

name‌
作用‌: 调试配置的名称,显示在调试启动下拉列表中。
示例‌: “name”: “Python: Current File”
type‌
作用‌: 指定调试器类型,需与安装的调试扩展匹配(如 python, node, go, cppdbg)。
示例‌: “type”: “python”(使用 Python 扩展调试)
request‌
作用‌: 定义调试请求类型:
 launch: 启动新程序进行调试(默认)。
 attach: 附加到已运行的进程。
 示例‌: "request": "launch"
program‌
作用‌: 指定要调试的入口文件路径(适用于编译型或脚本语言)。
示例‌: "program": "${file}"(调试当前打开的文件)

语言/环境相关参数‌

args‌
作用‌: 传递给程序的命令行参数列表。
示例‌:
&emsp;"args": ["--port", "8080", "--verbose"]
env‌
作用‌: 设置调试时的环境变量。
示例‌:
"env": {"PYTHONPATH": "${workspaceFolder}/src", "DEBUG_MODE": "true"}
cwd‌
作用‌: 指定调试器的工作目录(程序运行的根路径)。
示例‌: “cwd”: “${workspaceFolder}/bin”

高级调试配置‌

preLaunchTask‌
作用‌: 调试前自动执行的任务(需在 tasks.json 中定义)。
任务名要和tasks.json里面的"label"值对应一致
console‌
作用‌: 控制调试控制台类型:
internalConsole: VSCode 内置终端(默认)。
integratedTerminal: 使用 VSCode 集成终端。
externalTerminal: 打开外部系统终端。
示例‌: “console”: “integratedTerminal”
stopOnEntry‌
作用‌: 是否在程序入口处自动暂停(用于逐行调试)。
示例‌: “stopOnEntry”: true

几个注意的点就是:

  1. program,改成与task.json中一致的
  2. preLaunchTask改成task.json的label值
    配置完成后即可开始程序的调试,例如打断点,查看变量等。

总结&&彩蛋

 本篇文章目的在于走通流程,具体的内容例如json文件怎么写,各个参数具体的含义还需要大家自己去查更多的资料。最后,留给大家一个彩蛋,这其实是一个vscode一键配置的程序,具体使用如视频所示。我看了一下,真的确实很方便,希望能带给大家帮助吧!