0. 前言
本文面向初学者(但不是纯小白),分享一点我的经验。毕竟百度“VS Code C”出来的第一条就是这个网页。其实VS Code真的不太适合写C,姑且算一种折腾吧。
本文所有内容均可从VS Code的官方文档:C++ programming with Visual Studio Code 以及各个插件的文档中获得,并且他们还会进行更新。(本文也进行过两次重大更新)如果你还想了解得更深一点,可以去看。其实本文基本上是由不断地尝试得出来的,如果有错误可以指出。
我的环境:64位Windows 10。如果你是32位的,在某些地方需要进行修改,不过本文中没有提,可以自己试着改。
1. 环境的准备
VS Code的官网和下载、安装,我就不多说了。点那个箭头可以下到其他操作系统的版本,现在x64系统下的直接是64位的,不用点箭头。另外VSC每个月都会更新一次(自动下载更新),不要告诉我按照我的配置运行不了最后发现你用的是好几个月以前的版本。
VS Code只是一个编辑器,并不是IDE(集成开发环境)。不含编译器(和许多其它功能),所以编译器要自己安装好。如果想用其他工具链或单纯用官方插件,参见第九点。
其实MinGW和MinGW-w64只是名字像,它们是两个不同的项目。为了方便,本文中的MinGW指的其实都是MinGW-w64。MinGW本身已经很久没有更新了,故不推荐。
LLVM Download Page 在此页面下载Clang。选Pre-Built Binaries中的Clang for Windows (64-bit),不需要下.sig文件
下载好了以后安装。添加环境变量时:选Add LLVM to the system PATH for all users(即第二项,不过第三项也差不多)。Clang的安装路径(Destination folder)我推荐填C:\LLVM,不装那里也行,下面的配置里路径就自己改。安装完了以后可能会弹出cmd说MSVC integration install failed。这个是因为Clang默认使用的是msvc的工具链,而我们选择的工具链是MinGW,所以就不用管这个提示。如果你想用别的工具链,参考第九点。
MinGW随便装哪,Architecture选x86_64,装好以后把东西全部复制到Clang的文件夹里去,他们会无冲突合并,效果图见下。同样,不做这一步也行,下面的配置里路径就自己改,还要手动把MinGW的bin文件夹加到path中,因为MinGW不会自己加。至于为什么既要装Clang又要装MinGW,是因为Clang没有头文件。然后就可以把MinGW删了(Uninstall.exe)。不建议安装多个MinGW;可以把其他轻量IDE的编译器设为Clang,并把其他的MinGW从环境变量中去掉。
如果因为网络问题一直下载失败,建议优先自己想办法。我提供一个我下好的MinGW(7.2.0版):https://pan.baidu.com/s/1slwTebV
运行cmd,输clang,应该会提示no input files而不是“不是内部命令或外部命令”或者“无法将“clang”项识别为 cmdlet、函数、脚本文件或可运行程序的名称”。输clang -v或gcc -v可以显示出各自的版本。如果是“不是内部命令或外部命令”,说明clang.exe在的文件夹(我的是C:\LLVM\bin)没有在环境变量中,要加到path里才行。怎么做自己百度。如果加了还是这样,重启。
需要安装的插件:
C/C++(就是有些教程里的cpptools)
C/C++ Clang Command Adapter:提供静态检测(Lint)
Code Runner
Include Autocomplete:提供头文件补全
C/C++ Snippets:Snippets即重用代码块
其他可选插件:
Bracket Pair Colorizer:彩虹花括号
One Dark Pro:大概是VS Code安装量最高的主题
GBKtoUTF8:把GBK编码的文档转换成UTF8编码的
2. 配置四个.json文件
此节我当时大部分参考的是@blackkitty的文章,但是现在修改了很多。
先创建一个你打算存放代码的文件夹(称作工作区),路径不能含有中文和空格。c语言和c++需要建立不同的工作区(除非你懂得下面json文件的某些选项,则可以做到一个工作区使用不同的build task)。然后打开VS Code,选打开文件夹,选择刚才那个文件夹,点VS Code上的新建文件夹,名称为.vscode(这样做的原因是Windows的Explorer不允许创建的文件夹第一个字符是点),然后创建 launch.json,tasks.json,settings.json,c_cpp_properties.json放到.vscode文件夹下,效果图:
复制以下代码时不要用ie打开本网页!(能碰到兼容性问题也是难得,究竟是知乎的代码编辑窗口有问题还是ie有问题……)复制出来以后,知乎会自动在前面加上几行保留所有权利的字,实际使用的时候肯定要删了的。
launch.json代码:
该文件除stopAtEntry可根据自己喜好修改外,无需更改。除非你不用windows,则可以用llvm调试(需要自己装)。
// https://github.com/Microsoft/vscode-cpptools/blob/master/launch.md
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch", // 配置名称,将会在启动配置的下拉菜单中显示
"type": "cppdbg", // 配置类型,这里只能为cppdbg
"request": "launch", // 请求配置类型,可以为launch(启动)或at