前言
可以发现常见的名词有GNU、MinGW、MSYS、MSVC。
当linux系统上想要编译C++时,编译器直接拿GNU的,gcc、g++等。
当windows系统上想要使用GNU时,可以选择MinGW和MSYS,MSYS的好处是有bash,可以用类Unix系统的工具。
windows系统上的MSVC则是只能在windows上使用,并且不是gcc、g++等编译器,具有和前面三者不同的ABI,相互之间不能链接。
过去在vscode中使用MSVC时,是直接把工具目录设成某个版本的VS的文件夹里,这样做不知是否正确。
从网络上找到了一个正确使用MinGW的攻略所以跟着做了下。
vscode 搭建 C/C++ 编译环境教程(windows) - 知乎
能够使用CodeLLDB进行调试,也能正确运行和链接标准库。
原理
之所以完成不了这项工作,是因为缺少了一部分重要知识。
编译链接是通过g++完成的,调试则是通过gdb完成的。
整个生成过程,通过task.json配置,而调试则需要配置launch.json。
所以从g++改成使用cmake,区别基本不在于launch.json,而是cmake不会自动生成调试配置。
另一个重要知识是vscode在没有launch和task配置文件时会自动生成并使用默认配置。使用ctrl+shift+B可以选择如何生成,而F5实际上是执行被选中的调试程序,而没有生成。生成是F7,而cmake tool可以自动使用默认的生成。
操作
Linux环境下使用VScode调试CMake工程 - 知乎
只需要配置launch.json并且选择“(gdb)启动”,选择生成的可执行文件位置,以及gdb的位置即可。
comment 评论区
star_outline 咱快来抢个沙发吧!