上篇文章我们讲解了​​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主题

VSCode运行原理:

先执行任务生成可执行文件,然后在调试程序。即:​​task.json​​​ —>​​launch.json​​​。以及C++环境配置选项​​c_cpp_properties.json​

配置任务

task.json的生成:终端->配置任务,此时默认的task.json将生成。由于我们选择的g++的编译环境,所以我们选择g++。

task.json:启动进程前需要执行的任务(例如g++编译程序生成可执行文件)。可以创建多个task,选择一个标记为默认值。

VSCode 环境配置管理_vscode

{
"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

VSCode 环境配置管理_vscode_02

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​​打断点了。

VSCode 环境配置管理_vscode_03

基本调试步骤:​​运行任务==》调试程序,但是我们往往是F5直接调试程序,所以我们就需要指定运行前需要执行的任务,即配置preLaunchTask字段。此时F5就可以实现一键编译和调试了。​

C++环境属性配置

​c_cpp_properties.json​​​针对C/C++相关拓展的配置。可以直接编辑​​c_cpp_properties.json​​​也可以打开UI界面设置:​​ctrl+shirt+p​​​,下搜索框输入​​C/C++: Edit configurations(UI)​​,此时就可以打开设置界面了

VSCode 环境配置管理_json_04

​VSCode 常见的变量列表​

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

实战:配置C++11环境

​task.json​​​的指令参数里面指定​​--std=c++11​

VSCode 环境配置管理_linux_05


此时任务是可以正常运行的,但是vscode可能会提示语法问题,这是因为vscode没有指定c++11的语法检查环境,所以此时只需要把​​c_cpp_properties.json​​里面的c++标准修改成c++11即可。

VSCode 环境配置管理_linux_06

实战:配置makefile编译模式

在当前目录编写好​​makefile​​​文件,然后在​​task.json​​​里面增加make的task,并在​​launch.json​​​指定​​preLaunchTask​​为make的任务。

{
"version": "2.0.0",
"tasks": [
//添加makefile任务
{
"type": "shell",
"label": "make:makefile compile files",
"command":"/usr/bin/make",
//由于make默认是makefile,所以这里省钱了参数
"args": [

],
"options": {
"cwd": "${fileDirname}"
}
}
]
}
//和task的label对应
"preLaunchTask": "make:makefile compile files",

VSCode 环境配置管理_ide_07

但是在实际过程中我们可能需要在编译之前做一些其他操作,例如拷贝文件或者创建目录等操作,此时就需要指定​​dependsOn​​选项。

{
"version": "2.0.0",
"tasks": [
//添加makefile任务
{
"type": "shell",
"label": "make:makefile compile files",
"command":"/usr/bin/make",
//由于make默认是makefile,所以这里省钱了参数
"args": [

],
"options": {
"cwd": "${fileDirname}"
}
//需要依赖的任务集合,在执行该任务之前会依次执行下面依赖的任务
"dependsOn":[
//和task的label对应
"make:clean"
]
},
//执行make clean操作
{
"type": "shell",
"label": "make:clean",
"command":"/usr/bin/make",
"args": [
"clean"
],
"options": {
"cwd": "${fileDirname}"
}
}
]
}

VSCode 环境配置管理_vscode_08

上面是针对单个文件的入门task编写,后面我们会讲解​​多文件的一键编译和调试​​。

关于VSCode的快捷键以及插件配置同步可以参考:​​史上最全vscode配置使用教程​