利用Dev-C++配置VS Code的C++环境

本文利用Dev-C++中现有的编译器,来配置VS Code的C++运行环境,并支持C++11。

将编译器添加到环境中

找到Dev-C++中的MinGW64编译器的位置,通常位置为

D:\Program Files (x86)\Dev-Cpp\MinGW64

打开系统的环境变量设置,打开用户变量的Path,添加 D:\Program Files (x86)\Dev-Cpp\MinGW64\bin

打开cmd,输入 gcc -v 来检测是否加入成功,如果添加失败,会输出

'gcc' 不是内部或外部命令,也不是可运行的程序或批处理文件。

添加成功后,在cmd中输入 gcc -v -E -x c++ - 来获取链接文件的地址,在cmd输出的结尾,能看到7行路径,保存下来这7行路径待会需要用到。

配置VS Code

VS Code 安装C/C++code runner 拓展

在VScode中打开一个工作文件夹,文件夹目录需要全英文且无特殊符号

打开后会在左侧文件夹中找到一个名叫 .vscode 的文件夹,打开里面的三个文件:launch.jsontasks.jsonc_cpp_properties.json注意要修改路径

launch.json

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) 启动",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",//指默认文件操作的目录(如fopen的默认寻找位置),${fileDirname}是C/C++文件的目录,修改为${workspaceFolder}就是工作文件夹目录
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "D:/Program Files (x86)/Dev-Cpp/MinGW64/bin/gdb.exe",//路径要修改
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: gcc.exe 生成活动文件"
}
]
}

tasks.json

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
{
"version": "2.0.0",
"command": "gcc",
"args": [
"-std=c++11",//C++11
"-static-libgcc",
"-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
}
},
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "new",
"showReuseMessage": true,
"clear": false
},
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc.exe 生成活动文件",
"command": "D:/Program Files (x86)/Dev-Cpp/MinGW64/bin/g++.exe",//路径要修改
"args": [
"-std=c++11",//C++11
"-static-libgcc",
"-g",
"${file}",
"-o",
"${fileDirname}\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "D:/Program Files (x86)/Dev-Cpp/MinGW64/bin"//路径要修改
},
"problemMatcher": [
"$gcc"
],
"group": "build",
"detail": "编译器: \"D:/Program Files (x86)/Dev-Cpp/MinGW64/bin/g++.exe\""//路径要修改
},
{
"type": "cppbuild",
"label": "C/C++: g++.exe 生成活动文件",
"command": "D:/Program Files (x86)/Dev-Cpp/MinGW64/bin/g++.exe",//路径要修改
"args": [
"-std=c++11",//C++11
"-static-libgcc",
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "D:/Program Files (x86)/Dev-Cpp/MinGW64/bin"//路径要修改
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
}
]
}

c_cpp_properties.json

在这个文件中,需要填写之前从cmd中得到的7行路径。

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
27
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**",
"D:/Program Files (x86)/Dev-Cpp/MinGW64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/include/c++",//路径要修改
"D:/Program Files (x86)/Dev-Cpp/MinGW64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/include/c++/x86_64-w64-mingw32",//路径要修改
"D:/Program Files (x86)/Dev-Cpp/MinGW64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/include/c++/backward",//路径要修改
"D:/Program Files (x86)/Dev-Cpp/MinGW64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/include",//路径要修改
"D:/Program Files (x86)/Dev-Cpp/MinGW64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../include",//路径要修改
"D:/Program Files (x86)/Dev-Cpp/MinGW64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/include-fixed",//路径要修改
"D:/Program Files (x86)/Dev-Cpp/MinGW64/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../x86_64-w64-mingw32/include"//路径要修改
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"compilerPath": "D:/Program Files (x86)/Dev-Cpp/MinGW64/bin/g++.exe",
"cStandard": "c99",
"cppStandard": "c++11",
"intelliSenseMode": "gcc-x64"
}
],
"version": 4
}

保存成功后,编写一个程序并保存在工作文件夹下,按下 F5 编译运行,注意文件名不能出现中文!

运行后闪退的解决

上面的 launch.json 中是通过直接启动编译器生成的.exe文件来运行的,运行结束后程序会立刻退出。这里可以利用cmd来运行生成的.exe文件并添加上 pause ,使得程序运行结束后不会立刻退出。

launch.json 修改为以下内容:

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
27
28
29
30
31
32
33
34
35
36
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) 启动",
"type": "cppdbg",
"request": "launch",
"program": "C:\Windows\system32\cmd.exe",
"args": [
"/C",
"${fileDirname}\${fileBasenameNoExtension}.exe",
"&",
"pause"
],
"stopAtEntry": false,
"cwd": "${fileDirname}",//指默认文件操作的目录(如fopen的默认寻找位置),${fileDirname}是C/C++文件的目录,修改为${workspaceFolder}就是工作文件夹目录
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "D:/Program Files (x86)/Dev-Cpp/MinGW64/bin/gdb.exe",//把这个路径改成自己电脑的gdb.exe路径
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: gcc.exe 生成活动文件"
}
]
}

然后再运行程序,程序运行结束后会出现 请按任意键继续. . .

程序输出中文时乱码的解决

因为控制台所用的编码为GBK,而VS Code所使用的编码为UTF-8,两者编码不一致导致的中文输出乱码。

这里将VS Code所使用的编码改为GBK,与控制台保持一致即可。

在VS Code中按 Ctrl+Shift+P ,输入 user ,点击 打开用户设置 ,在打开界面的最上方的搜索栏里输入 encoding ,在界面里的下拉框中选择 Simplified Chinese (GBK) 即可。

对于已打开的文件,在文件的右下角点击 UTF-8 ,在上方的弹出框中选择 通过编码重新打开 , 选择 Simplified Chinese (GBK) ,这时文件里所有的中文都会变成乱码,删除再重新输入即可。

然后再运行程序,程序将正常输出中文。