最近要学 CSAPP,考虑到这门神课的 lab,最早跟着数据结构基础 / leetcode
一点简单题敲的时候用的基础的 VSCode & MinGW
的模式不能适配这样的新状态。针对复杂起来的工程,不能再简单的使用 .h
来穿插在一个单独的 .cc 文件当中,所以需要一个构建工具。同时,针对 MinGW
和这套文本编辑器,以后到 lab
很复杂的时候,也在这篇博客里面标记一下。
先从 VSCode 配置 C
说起,毕竟你校一帮人觉得就是纯粹的浪费时间,要让信息不对称的新同学强行咽下
Dev C++
这颗苦果。作为开发工具界面重度婆罗门的我,即使根本没太多「软件工程」的意识和水平,但得益于好工具带来的惊天动地的效率提升 ,必须得把它给翻译过来怼你脸上——和这样的虫豸在一起怎么能写好代码呢?(指连工具都非常陈旧,更不用谈现代化的一些东西和学习的方法论)
Using GCC with MinGW 
在 VSCode 上安装 C / C++ 扩展(Ctrl + Shift +
X)。接下来的步骤就开始通过 MSYS2 安装编译器 MinGW-x64。 
安装包管理器 MSYS2。 
设置包管理器的 清华 MSYS2
镜像  、在 MSYS2  上安装
MinGW-W64,注意每个必需的步骤和 pacman 命令,尤其是其中的第
7 步。 
配置环境变量:在用户变量里面的 Path 中添加 Mingw-w64
的位置。按照上面的话就是 C:\msys64\mingw64\bin。 
分别检查 g++ --version 和
gdb --version。 
 
构建 
在这个时候就可以通过创建 tasks.json 文件来告诉 VSCode
如何构建程序。
在 VSCode 中,选择 终端 > 配置默认生成任务。选择「g++.exe
生成活动文件」。这会在.vscode文件夹中创建一个
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 {     "tasks" : [         {             "type" : "cppbuild" ,             "label" : "C/C++: g++.exe 生成活动文件" ,             "command" : "C:\\msys64\\mingw64\\bin\\g++.exe" ,             "args" : [                 "-fdiagnostics-color=always" ,                 "-g" ,                 "${file}" ,                 "-o" ,                 "${fileDirname}\\${fileBasenameNoExtension}.exe"              ],             "options" : {                 "cwd" : "${fileDirname}"              },             "problemMatcher" : [                 "$gcc"              ],             "group" : {                 "kind" : "build" ,                 "isDefault" : true              },             "detail" : "调试器生成的任务。"          }     ],     "version" : "2.0.0"  } 
 
其中 command 设置指定要运行的程序(MinGW 的 g++
位置)。
isDefault 指定在按 Ctrl + Shift + B
构建时,是否按上面的来运行。设置成 false 也可以手动运行。
调试 
在主菜单选择运行 > 添加配置,然后选择 C++ (GDB /
LLDB) 。下拉列表里选择 g++.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 27 28 29 {                    "version" : "0.2.0" ,     "configurations" : [              {             "name" : "g++.exe - 生成和调试活动文件" ,             "type" : "cppdbg" ,             "request" : "launch" ,             "program" : "${fileDirname}\\${fileBasenameNoExtension}.exe" ,             "args" : [],             "stopAtEntry" : false ,             "cwd" : "${fileDirname}" ,             "environment" : [],             "externalConsole" : false ,             "MIMode" : "gdb" ,             "miDebuggerPath" : "C:\\msys64\\mingw64\\bin\\gdb.exe" ,             "setupCommands" : [                 {                     "description" : "为 gdb 启用整齐打印" ,                     "text" : "-enable-pretty-printing" ,                     "ignoreFailures" : true                  }             ],             "preLaunchTask" : "C/C++: g++.exe 生成活动文件"          }            ] } 
 
按 F5
调试。然后可以设置断点、单步执行等各种功能。看微软自己的说明就行。
使用 CMake 
按照教程配置即可。如果找不到 CMake Generator 就在 settings.json &
cmake-tools-kits.json 里面分别设置:
1 2 3 4 5 6 {     "cmake.mingwSearchDirs" : [         "C:\\mingw-w64\\mingw64\\bin"      ],     "cmake.generator" : "MinGW Makefiles"  } 
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...   {     "name" : "GCC 7.2.0" ,     "compilers" : {       "C" : "C:\\mingw-w64\\mingw64\\bin\\gcc.exe" ,       "CXX" : "C:\\mingw-w64\\mingw64\\bin\\g++.exe"      },     "preferredGenerator" : {       "name" : "MinGW Makefiles"      },     "environmentVariables" : {       "CMT_MINGW_PATH" : "C:\\mingw-w64\\mingw64\\bin"      }   },   ...