VS Code C语言开发环境配置

由于安全上的要求,我司的开发环境比较复杂,涉及到Citrix非涉密/涉密桌面和远程Linux编译服务器等等,在这样的环境下用VS Code需要经过一系列的折腾,这篇文章简要记录了我最初的配置流程。

安装VS Code

首先,在非涉密桌面访问VS Code官网下载最新安装包,然后安装到Q盘中(重要!)。这是因为各种软件默认安装到的是被隐藏的C盘,而非涉密桌面环境中的C盘会在重启时被自动重置,你的软件就没了。

不要急着删除安装包,将它复制到T盘(直接剪切可能会报权限错误),转移到涉密桌面。如果之前你已经启动了涉密桌面,可以尝试用快捷键Ctrl + Alt + Tab进行切换。

到涉密桌面环境后,安装VS Code——这次可以装在C盘里,涉密桌面的C盘是不会被重置的。注意,安装时会有几个选项,询问是否要加入右键菜单以及PATH等,请把所有的勾都勾上。

安装扩展

众所周知,VS Code最重要的是扩展。由于涉密桌面没有外网,我们要安装扩展只能先从非涉密桌面下载,再通过T盘转移。

但是,VS Code默认存放扩展的目录在C盘,这导致非涉密桌面一旦重启,你的扩展就会全部消失。所以,装扩展之前要先更改非涉密桌面中VS Code存放扩展的目录。

我没有在设置里找到直接修改的方法,但你可以通过以下的方法来间接修改。

首先进入VS Code的安装目录(没忘记装在哪了吧),新建一个文件夹,命名为extensions

在桌面上VS Code的快捷方式上右键打开属性(假如桌面上没有,就去安装目录里找到code.exe,右键发送->桌面快捷方式),找到目标(T)一栏,在已有内容的后面添上:

1
--extensions-dir "(你刚才创建的extensions文件夹的完整路径)"

这实际上是为VS Code设置了一个启动参数,说明要从你新建的这个extensions文件夹读取扩展,同时,你下载的扩展也会被放到这里。以后只要从这个快捷方式启动VS Code,不管重启VDI几次扩展都还在,因为extensions文件夹是在Q盘里的。

好了,接下来启动VS Code。

VS Code最左侧的边栏中有一个由四个方块组成的图标,那就是扩展管理。点击它后,你可以使用上面的搜索框寻找应用商店里的扩展,它们全都是托管在GitHub上的开源项目。

第一个要安装的是中文语言包,搜索Chinese就有了。安装之后,按Ctrl + Shift + P启动VS Code命令面板,输入language,选择Configure Display Language,将显示语言配置为zh-cn。重启VS Code,令人安心的中文就出来了。

第二个是C/C++扩展,它为C语言提供了IntelliSense代码补全、调试功能等等,搜索安装即可。安装完后,右下角还会出现一个小框,那是它正在安装几个依赖包。

第三个是Code Runner扩展,安装它之后你的编辑器窗口右上会有个播放键,点击就可以运行代码了。对于C语言,它会调用gcc编译器将代码编译运行。对它的使用我目前还不熟悉,安装聊胜于无。

第四个是Bracket Pair Colorizer 2,它将各组配对的括号用不同的颜色表示,

扩展安装全部完成之后,将你的extensions文件夹整个通过T盘复制到涉密桌面里VS Code的安装目录下。

最后,在涉密桌面的快捷方式里也设置一遍启动参数,启动VS Code,你会发现扩展已经全部转移过来了。

安装编译器

你还需要一个编译器才能将C语言源代码转换成可执行程序。

在Windows平台使用比较广泛的是MinGW,它包含了著名的GCC编译器。但是在公司的网络环境下,下载MinGW十分缓慢,有没有别的办法?

Dev-C++是一个开箱即用的轻便C/C++ IDE,它也内置了我们需要的GCC编译器。我们可以借此来个“曲线救国”。为了让下载快一点,你可以到腾讯软件中心的网页版下载其镜像,进入链接后选择“普通下载”即可。

安装时的安装语言列表可能会有乱码,先选择English。安装完成之后出现引导界面,就可以选择简体中文UI了。

为了方便地使用GCC编译器,应该将其添加到环境变量。

先来到Dev-C++的安装目录,找到MinGW64\bin文件夹,复制其路径。打开开始菜单,输入env就能快速导航到环境变量设置。将之前复制的路径粘贴到PATH环境变量的末尾,一路确定保存,再新开启一个命令行输入gcc试试。如果提示“fatal error: no input files”,就说明GCC的环境变量已经配置好了。

在VS Code中按Ctrl + ~(即键盘左上角Esc下面的那个键)可以开启内置终端。默认的终端是cmd,但你可以将其改为pwsh以使用几乎完全兼容cmd且功能强大得多的PowerShell。

测试一下

接下来,用VS Code打开一个文件夹,新建一个C语言源文件,随便写点什么,比如Hello World:

1
2
3
4
5
6
7
8
##include <stdio.h>

int main(void)
{
printf("Hello World!\n");
getchar();
return;
}

然后,在终端中执行gcc 源文件名 -o 输出文件名,你的源码就被编译出来了。用命令行运行编译出的可执行文件,将在终端中输出Hello World!

最后

以上就是VS Code的基本。要进行调试其实也是可以的,但那个配置起来也相当麻烦,是另一个故事了(我自己也还没配好,鸽了)。

顺带一提,为了快速插入代码规范要求的源文件/函数注释,可以使用VS Code的“代码片段”功能,按Ctrl + Shift + P启动VS Code命令面板,输入snippet配置用户代码片段,选择C语言,使用方法已经写在文件注释里了。

得益于大量的扩展,还有很多好玩的东西。比如SSH扩展能让你在VS Code中直接连到编译服务器,此时VS Code的终端就是远程Linux服务器的终端,左侧的资源管理器也可以管理Linux服务器的文件。由于在Windows 7一类的老版系统里没有内置OpenSSH,要实现这个还得折腾一回,这里给出两篇相关文章:

Installing OpenSSH on Windows 7

如果依照上面的文章配置时出现问题,请看这里:

vscode进行远程服务器 An SSH installation couldn’t be found