上篇文章我们讲解了VScode的基本安装,现在我们搭建一个最基础的C++环境(由浅入深)。
1.首先安装基本插件
| 插件名称 | 插件说明 |
|---|---|
| C/C++ | IntelliSense, debugging, and code browsing。提供C/C++支持 |
| Code Runner | 提供编译后程序的运行环境 |
| C/C++ Snippets | 提供一些常用的C/C++片段 |
| EPITECH C/C++ Headers | 为C/C++文件添加头部(包括作者、创建和修改日期等),并为.h头文件添加防重复的宏 |
| File Templates | 文件模板,可以自己添加文件模板 |
| GBKtoUTF8 | GBK编码文件转换为UTF-8 |
| Include Autocomplete | 头文件自动补全 |
| One Dark Pro | 可以打造好看的VS Code主题 |
先执行任务生成可执行文件,然后在调试程序。即:task.json —>launch.json。
task.json的生成:终端->配置任务,此时默认的task.json将生成。由于我们选择的g++的编译环境,所以我们选择g++。
task.json:启动进程前需要执行的任务(例如g++编译程序生成可执行文件)。可以创建多个task,选择一个标记为默认值。

{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
//task的任务标签,当执行任务的时候展示的标题
"label": "C/C++: g++ 生成活动文件",
//执行命令的程序,这里是g++
"command": "/usr/bin/g++",
//g++的命令参数
"args": [
"-fdiagnostics-color=always",
"-g",
//需要编译的文件,所以执行任务的时候需要选中main.cpp
"${file}",
"-o",
//${fileDirname}文件所在目录,${fileBasenameNoExtension}文件名,不包括后缀
"${fileDirname}/${fileBasenameNoExtension}"
],
//上述代码翻译成g++命令
///usr/bin/g++ -fdiagnostics-color=always -g /home/jefcat/work/vscodedemo/main.cpp -o /home/jefcat/work/vscodedemo/main
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
//是否为默认任务
"isDefault": true
},
"detail": "编译器: /usr/bin/g++"
}
]
}
运行任务:终端->运行任务。 此时就可以编译并且生成执行文件main

NOTE:运行任务的时候一定要选中main.cpp,因为g++执行命令里面有指定编译文件。此处我们仅仅展示原理demo,只有一个文件,实际肯定是多文件,所以task.json需要自己根据需求配置。这里仅仅作为原理入门。
launch.json:用于设置调试和运行,用来执行编译好的文件,默认就会生成launch.json。如果没有的话可以通过:运行->打开/添加配置生成launch.json。
{
"version": "0.2.0",
"configurations": [
{
//调试或者运行前需要执行的任务。和taskjson的label想对应。
"preLaunchTask": "C/C++: g++ 生成活动文件",
"name": "C/C++ Runner: Debug Session",
"type": "cppdbg",
"request": "launch",
"args": [
""
],
"stopAtEntry": false,
//指定工作目录
//"cwd": "/home/jefcat/work/vscodedemo",
"cwd": "${fileDirname}"
"environment": [],
//指定运行程序,屏蔽部分都是模板默认生成的,所以我们需要修改一下。
//"program": "/home/jefcat/work/vscodedemo/build/Debug/outDebug",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"internalConsoleOptions": "openOnSessionStart",
"MIMode": "gdb",
"miDebuggerPath": "/usr/bin/gdb",
"externalConsole": false,
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
此时最重要的就是program标签,这里需要指定通过task生成的目标文件。不能直接使用模板的,否则会提示找不到执行文件或者非执行文件。下面是launch.json的关键字说明
| 关键字 | 说明 |
|---|---|
| preLaunchTask | 执行调试前 要完成的任务。该值需要与tasks.json中的label想对应 |
| externalConsole | 调试是否显示控制台。如果需要输入东西,最好修改为true使用外部控制台(在运行时额外打开终端)。否则用vscode内置的控制台不能输入东西 |
| type | 配置类型。不能改 |
| program | 调试程序所在路径和程序名 |
| stopAtEntry | 为true时程序暂停在程序入口,一般填false |
| cwd | 程序的工作目录 |
| miDebuggerPath | 调试器路径,Windows下后缀不能省略 |
此时通过F5就可以调试程序,F9打断点了。

运行任务==》调试程序,但是我们往往是F5直接调试程序,所以我们就需要指定运行前需要执行的任务,即配置preLaunchTask字段。此时F5就可以实现一键编译和调试了。后面我们会讲解一键配置C/C++多个C及CPP文件编译。
your-project:为打开的文件夹
| 变量 | 说明 |
|---|---|
| ${userHome} | /home/your-username |
| ${workspaceFolder} | /home/your-username/your-project |
| ${workspaceFolderBasename} | your-project |
| ${file} | /home/your-username/your-project/folder/file.ext |
| ${fileWorkspaceFolder} | /home/your-username/your-project |
| ${relativeFile} | folder/file.ext |
| ${relativeFileDirname} | folder |
| ${fileBasename} | file.ext |
| ${fileBasenameNoExtension} | file |
| ${fileDirname} | /home/your-username/your-project/folder |
| ${fileExtname} | .ext |
| ${lineNumber} | line number of the cursor |
| ${selectedText} | text selected in your code editor |
| ${execPath} | location of Code.exe |
| ${pathSeparator} | / on macOS or linux, \ on Windows |