- 在安装完Mingw-w64和VS Code之后,将Mingw-w64的bin目录添加到系统变量Path中;
- 打开VS code后找到左则工具条上的“扩展”按钮(四个小方块那个)点击后进入扩展应用商店,在搜索框中搜索"C/C++"和"code runner"并安装它们,其他的扩展看自己需要安装(推荐安装中文语言包);

- 新建一个工作目录(为了避免不必要的麻烦,路径最好不要包含中文和空格);通过VS code的"文件"菜单打开这个目录;打开之后在目录名(我的目录名是"CHAPTER_000_3")后边有四个图标,第一个图标是新建文件;点击之后在下方输入文件名(我的文件名是"main.cpp")之后回车创建文件;

- 国际惯例,来一段hello world;
#include <iostream> int main() { std::string msg = "hello, world";//据说世界上第一个hello world程序打印出来就是这个样子;全部小写,两个单词之间用逗号和空格分隔,结尾没有标点符号。 std::cout << msg << std::endl; return 0; }
- 要在VS code中运行上面这段代码也没有那么容易,首先让VS code自动为我们创建c_cpp_properties.json、launch.json、settings.json、tasks.json这四个文件;
第一步:创建tasks.json文件,在菜单条中点击<终端(T)>选择最后一项<配置默认生成任务...>之后<运行>框会弹出下拉列表,选择<C/C++:g++.exe build active file>,VS code会自动在工作文件夹下创建.vscode目录,并在该目录下创建tasks.json文件;


//tasks.json 本行不用复制 { "version": "2.0.0", "tasks": [ { "type": "cppbuild", "label": "C/C++: g++.exe build active file", "command": "C:\\TDM-GCC-64\\bin\\g++.exe", "args": [ "-g", "${file}", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe" ], "options": { "cwd": "C:\\TDM-GCC-64\\bin" }, "problemMatcher": [ "$gcc" ], "group": { "kind": "build", "isDefault": true }, "detail": "compiler: C:\\TDM-GCC-64\\bin\\g++.exe" } ] }
第二步:创建c_cpp_properties.json文件,按下ctrl+shift+P,在<运行>框输入"C/C++",在下拉列表中找到<C/C++:编辑配置(json)>点击开始编辑c_cpp_properties.json文件;


//c_cpp_properties.json 本行不用复制 { "configurations": [ { "name": "Win32", "includePath": [ "${workspaceFolder}\\**" ], "defines": [ "_DEBUG", "UNICODE", "_UNICODE" ], "compilerPath": "C:\\TDM-GCC-64\\bin\\g++.exe", //g++所在的目录 "cStandard": "c17", //使用C17标准 "cppStandard": "c++17", //使用C++17标准 "intelliSenseMode": "gcc-x64" //因为使用GCC编译Windows程序所以IntelliSense 设置为gcc-x64 } ], "version": 4 }
第三步:创建launch.json文件,在菜单条中选择<运行(R)>点击<添加配置>,在<运行>框弹出的下拉列表中选择<C++(GDB/LLDB)>,之后选择<g++.exe - 生成和调试活动文件>(不知道为什么出现两个g++选项,反正我选择第一个);


这里不知道什么原因有时候生成的launch.json文件会有问题。如果你操作后生成的内容没有配置好"program"、"miDebuggerPath" 和 "preLaunchTask的话,就复制我的文件,把gdb路径替换成你的就行了。还有一个注意事项就是 "preLaunchTask"的值必须与tasks.json文件中"label"的值保持一样,否则无法调试;

//launch.json 本行不用复制 { "version": "0.2.0", "configurations": [ { "name": "g++.exe - 生成和调试活动文件", "type": "cppdbg", "request": "launch", "program": "${fileDirname}\\${fileBasenameNoExtension}.exe", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "miDebuggerPath": "C:\\TDM-GCC-64\\bin\\gdb.exe", "setupCommands": [ { "description": "为 gdb 启用整齐打印", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "C/C++: g++.exe build active file" } ] }
第四步:创建settings.json文件,这里要创建的是对应当前工作目录的settings.json文件;按下ctrl+shift+P调出<运行>框,输入"settings.json"选择"首选项: 打开工作区设置(JSON)"开始编辑settings.json文件;

删除默认生成的内容,将下面的配置文件内容复制进去;

//settings.json 本行不用复制 { "code-runner.runInTerminal": true,//让code runner在Power Shell中运行; "code-runner.executorMap": { //此处有很多项,我只保留了C和C++的; "c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt", "cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt" } }
- 运行一下前面敲的代码,在代码编辑区右键鼠标,点击<Run Code>,如果在下面的命令行中看到"hello, world"说明编译器已经配置成功;

- 最后一步,测试一下gdb是否正确配置,在左则工具条中点击<运行>按钮(有甲虫的那个),在代码编辑区设置一个断点(在行号的左边单击,会出现一个小红点),最后点击绿色的三角进行调试;如果在变量栏里看到变量的值,在主窗体的标题下面看到调试工具条说明配置正解了。

TDM-GCC9.2.0目前不支持通配符编译,所以还是去mingw-w64.org下载Mingw-W64-builds。