最近要学 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" } }, ...