上篇文章我们讲解了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,选择一个标记为默认值。
运行任务:终端->运行任务。 此时就可以编译并且生成执行文件main
NOTE
:运行任务的时候一定要选中main.cpp,因为g++执行命令里面有指定编译文件。此处我们仅仅展示原理demo,只有一个文件,实际肯定是多文件,所以task.json需要自己根据需求配置。这里仅仅作为原理入门。
运行调试程序
launch.json
:用于设置调试和运行,用来执行编译好的文件,默认就会生成launch.json。如果没有的话可以通过:运行->打开/添加配置生成launch.json。
此时最重要的就是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_cpp_properties.json
针对C/C++相关拓展的配置。可以直接编辑c_cpp_properties.json
也可以打开UI界面设置:ctrl+shirt+p
,下搜索框输入C/C++: Edit configurations(UI)
,此时就可以打开设置界面了
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可能会提示语法问题,这是因为vscode没有指定c++11的语法检查环境,所以此时只需要把c_cpp_properties.json
里面的c++标准修改成c++11即可。
实战:配置makefile编译模式
在当前目录编写好makefile
文件,然后在task.json
里面增加make的task,并在launch.json
指定preLaunchTask
为make的任务。
但是在实际过程中我们可能需要在编译之前做一些其他操作,例如拷贝文件或者创建目录等操作,此时就需要指定dependsOn
选项。
上面是针对单个文件的入门task编写,后面我们会讲解多文件的一键编译和调试。
关于VSCode的快捷键以及插件配置同步可以参考:史上最全vscode配置使用教程