这边记录一下配置vscodeC/C++编译环境的过程,以便以后要配置的时候可以直接参考。
插件安装参考博文:VSCode配置C/C++环境和Windows下VSCode配置C++环境
2. 概述
我们知道vscode只是一个编辑器,要编译C/C++,我们需要安装编译器。一般我们安装的是MinGW,假设这里我的MinGW安装路径是D:\MinGW
回想我们之前用命令行或者IED编译项目,我们一般需要明确编译器的路径(包括了标准库的头文件和静态库),项目的编译规则,配置调试。
而上面这三部分就和vscode编译C/C++项目中的三个重要配置文件对应起来了。
现在我们就开始讲怎么将这三个文件调出来,以及文件的各行含义,以及如何设置这些文件中的参数。
2. 配置编译器设置(c_cpp_properties.json文件)
首先新建一个文件夹,打开,新建一个main.c的代码文件。
之前我们演示过在vscode的终端上用gcc和makefile进行编译,现在我们不使用这种方法,我们使用vscode配置文件的方法来编译。
按Ctrl+Shift+P或者点击查看-命令面板,调出命令面板
输入C/C++,选择C/C++:编辑配置(JSON)或者C/C++:编辑配置(UI),实测两个默认产生的文件是一样的,但是推荐选择C/C++:编辑配置(UI),选择C/C++:编辑配置(UI)会出现一个配置页面,比较方便,而选择编辑配置(JSON)只会产生一个配置文件。
选择C/C++:编辑配置(JSON),出现的页面
选择C/C++:编辑配置(UI),出现的页面,可以看到,除了有c_cpp_properties.json文件,还跳出了一个配置界面,我们在这个界面的修改会被同步到c_cpp_properties.json文件中。
这这里,我们需要配置 编译器路径,本项目所用头文件(不包括编译器自带的标准头文件)等信息。
这是我的c_cpp_properties.json文件
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "10.0.19041.0",
"compilerPath": "D:/MinGW/bin/gcc.exe",
"cStandard": "c99",
"cppStandard": "c++03",
"intelliSenseMode": "gcc-x64"
}
],
"version": 4
}
3. 配置编译规则(task.json文件)
设置好了编译器及头文件路径之后,我们现在要配置我们的编译项目的方法了。
之前源文件很少的时候,我们在命令行中用gcc都是直接编译的,文件一多之后,我们都是通过makefile来管理我们的编译规则。
在vscode中也是一样,我们需要配置我们要怎样编译我们项目。继续按Ctrl+Shift+P或者点击查看-命令面板,调出命令面板,输入task,选择任务:配置默认生成任务
再选择C/C++:gcc.exe生成活动文件,就会出现tasks.json文件
这是我的task.json文件
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc.exe 生成活动文件",//任务的名字,就是刚才在命令面板中选择的时候所看到的,可以自己设置
"command": "D:/MinGW/bin/gcc.exe",
"args": [//编译时候的参数
"-g",//添加gdb调试选项
"${file}",
"-o",//指定生成可执行文件的名称
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "D:/MinGW/bin"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true//表示快捷键Ctrl+Shift+B可以运行该任务
},
"detail": "编译器: D:/MinGW/bin/gcc.exe"
}
]
}
部分变量说明:
command 设置指定要运行的程序;在这种情况下是 g++或者gcc;
args 数组指定将传递给 g++ 的命令行参数。必须按照编译器期望的顺序指定这些参数。
此任务告诉 g++ 获取活动文件(${file}),对其进行编译,并在当前目录(${fileDirname})中
创建一个与活动文件同名但以 .exe 为扩展名(${fileBasenameNoExtension}.exe)的可执行文件,
如 helloworld.exe 。可使用"${workspaceFolder}\\*.cpp"来替换 ${file},这将生成当前文件夹中的所有 .cpp 文件;
label 是在任务列表中显示的值,可以随意命名
group 中 "isDefault": true 指定当按 Ctrl + Shift + B 时将运行此任务。此属性仅出于方便起见;如果设置为 false,仍然可以使用“ 任务:运行构建任务”从“终端”菜单中运行
gourp 中的 "isDefault": true,指定当按下 Ctrl + Shift + B 时将运行此任务。此属性仅出于方便起见;如果将其设置为 false,仍可以使用“ 运行生成任务”从“终端”菜单中运行
4. 配置调试(launch.json文件)
最后我们需要设置调试配置信息。
点击运行-启动调试
会生成launch.json文件,如下
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) 启动",
"type": "cppdbg",//配置类型,只能为cppdbg
"request": "launch",
"program": "${workspaceFolder}/main.exe",//调试程序的路径名称
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,//true显示外置的控制台窗口,false显示内置终端
"MIMode": "gdb",
"miDebuggerPath": "D:/MinGW/bin/gdb.exe",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
现在我们就将所有的配置完成了,下面我们就可以进行调试和编译了。
调试点运行-启动调试
编译点终端-运行生成任务
这样vscode上的C/C++环境配置就完成了。