vscode编译C/C++
C/C++环境的配置要比python的复杂许多,好几个配置文件要写。
一、编译C/C++的环境一般都是集成在我们的编辑器中的,如果电脑上有codeblock和dev,那么可以直接去找路径下的MinGW文件夹。而没有的读者则需要下载MinGW

二、配置环境变量
这里就不重复截图了,下面的是python配置环境变量的步骤,而这里只需改成我们的MinGW文件夹下的bin目录(我的是D:\MinGW\mingw64\bin),将其添加进去即可。
三、添加插件
打开VS Code,添加两个插件,记得都要重新加载或者重启VS Code一次

四、配置vscode环境
打开自己的项目,这里以Hello World为例。
1
2
3
4
5
6#include <iostream>
using namespace std;
int main() {
cout << "Hello World";
return 0;
}
打开之后我们发现,头文件出现了绿色的波浪线,这由于找不到头文件导致的
我们点击边上的橙色小灯泡,选择“Edit 'includePath' setting”,之后会创建一个文件夹.vscode(这个文件夹存放了配置文件),文件夹中有c_cpp_properties.json这个文件。
这个文件是json的格式。下面以Win32为例,添加相应includePath参数。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**",
"D:\\Dev-Cpp\\MinGW64\\bin"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"intelliSenseMode": "msvc-x64"
}
],
"version": 4
}
也可以通过以下方式选择需要的引入。
打开cmd,执行**gcc -v -E -u c++ -**这个命令,查看调用g++需要用到的文件路径,内容很多,只需要找到最下面的路径部分。
将这些参数添加到includePath后面,中间用逗号隔开,修改之后如下。细心的读者会发现上面只有3条记录,为什么下面的参数我写了5条,这是因为当你添加完cmd中输出的内容之后,保存配置文件,查看自己的C++文件时,绿色波浪线仍然没有消失,这里我们可以再次点击小灯泡,VS Code会继续补全我们的路径。之后绿色波浪线消失,说明我们编译路径已经配置完成。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26{
"name": "Win32",
"includePath": [
"${workspaceFolder}",
"D:/MinGW/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.3.0/include",
"D:/MinGW/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.3.0/include-fixed",
"D:/MinGW/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.3.0/../../../../x86_64-w64-mingw32/include",
"D:/MinGW/mingw64/lib/gcc/x86_64-w64-mingw32/7.3.0/include/c++",
"D:/MinGW/mingw64/lib/gcc/x86_64-w64-mingw32/7.3.0/include/c++/x86_64-w64-mingw32"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"intelliSenseMode": "msvc-x64",
"browse": {
"path": [
"${workspaceFolder}"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
},
"cStandard": "c11",
"cppStandard": "c++17"
}
五、调试
打开C++文件,我们按F5或者执行调试,之后将显示我们没有launch.json文件,VS Code会继续为我们创建一个文件,我们可以将launch.json文件的内容删除,并下面的代码完全复制进去。注意:复制进去之后要修改miDebuggerPath参数,这里面填写自己的gdb.exe路径,至此我们的编译配置已完成。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/a.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "D:\\Dev-Cpp\\MinGW64\\bin\\gdb.exe",
"preLaunchTask": "echo",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
六、编译
Ctrl+Shift+P,输入Tasks:Configure Task,之后选择使用模板创建tesks.json文件
同样覆盖源文件,填入下面的内容,用来配置编译命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"command": "g++",
"args": ["-g","${file}","-o","${file}.exe"], // 编译命令
"problemMatcher": {
"owner": "cpp",
"fileLocation": ["relative", "${workspaceRoot}"],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
}
七、执行
按F5即可执行,但是会发现console控制台只闪一下就消失了,这是因为原本中断的调用就是一次性的,而之所以在集成开发环境中会停留,是因为在IDE中编译后会执行
system("pause");,我们只需将这句话增加到cpp文件return 0;上面即可。
当然如果有人能够有更好的方法还望不吝赐教。