新知一下
海量新知
6 0 7 6 6 9 0

工欲善其事,必先利其器—VSCode篇

土盐AI | 为AI从业者赋能。 2021/11/30 00:34

算法的工程落地最终还是需要以C/C++程序的形式进行代码编译、库的链接,模块运行。VSCode作为当前主流的C++编辑器之一,具有轻量化的特性,跨平台的支持,丰富的扩展插件,简洁的用户体验等优点。但是初学者以编辑器+扩展插件的形式使用时,需要进行相关的编译和调试配置,本文给刚使用VSCode的小伙伴带来入门级的配置教学。

有哪些主流的C++ IDE?

这里介绍几种小编用过的C++开发工具:Visual Studio、Eclipse、Clion、VSCode。

最初小编在Windows上开发客户端/服务器软件时用的就是Visual Studio,不得不说它的功能很全面号称宇宙第一,但是也过于冗余,大几百兆甚至1G的安装包,在内存较小的笔记本上运行较吃力,最主要是它不支持Linux上的开发。

Clion是目前为止小编一直在用的C++ 跨平台IDE,智能提示、自动重构,GIT同步,SSH远端控制等功能都具备。不过主要JetBrains系列的IDE的产品用习惯了,Python的开发用的也是它家的Pycharm。唯一缺点就是不免费,虽然还是有方法破解的,但每次重装系统或者换电脑后总得折腾一番,这种不合法的做法就不推荐了。

VSCode应该算这两年比较普及的一个开发工具,全平台编辑器,它以编辑器+扩展插件的形式出现,当安装C++扩展后对开发者来说就相当于非常好用的IDE,能够进行断点调试,函数跳转。缺点就是编译和调试过程需要先进行配置,下面就给新入坑的小伙伴介绍下它的配置和运行过程。

VSCode的配置与调试

VSCode作为一个免费、开源的代码编辑软件,支持Windows、Linux、Mac等多操作系统的安装使用,并且它具有丰富的插件,比如语法高亮、自动补全、简体中文、编译工具等等。而且开发者可以通过安装插件的方式支持不同的开发语言:C++、Python、Javascript、HTML、Markdown等,完全可以满足各类程序猿的开发需求。

小伙伴们可以先从官网下载安装包,地址如下:

https://code.visualstudio.com/Download

同时官网上还提供了一份全面的教程,链接如下:

https://code.visualstudio.com/docs

新知达人, 工欲善其事,必先利其器—VSCode篇

小编是在Ubuntu上做开发,所以下载deb文件后使用以下命令进行安装:

sudo dpkg -i code_1.62.0-1635954068_amd64.d eb

这里教大家一个在Linux上创建桌面启动项的方法,各类软件均可 用。可以在/usr/share/applications下新建VSCode.desktop文件,然后添加如下内容:

[Desktop Entry]

Categories=GNOME;DesktopSettings;

Name=VSCode

Name[zh_CN]=VSCode

Name[en]=VSCode

Name[en_US]=VSCode

GenericName=VSCode

Comment=VSCode

Exec=/home/xxx/VS/Code

Terminal=false

Icon=/home/xxx//VS/resources/app/vso.png

Type=Application

StartupNotify=true

Hidden=false

X-KDE-SubstituteUID=false

X-KDE-Username=owen

VSCode的常用插件

VSCode是一个纯文本编辑器,不同于Clion和Visual Studio等集成开发环境,它并没有内置编译器。所以要进行C/C++工程的Debug调试,需要安装相应的插件。

这里稍微科普一下编辑器和编译器的区别,编辑器类似记事本只能提供打字的功能,而编译器可以把源代码变成可执行文件。日常使用的gcc和g++作为编译器会被集成到Clion等开发环境中,但是如果要在VSCode中编译程序,则需要安装额外的插件。

如下图所示,VSCode提供了各式各样的插件帮助开发者提供工作效率,可以根据自身需要在左侧栏的扩展中查找安装:

新知达人, 工欲善其事,必先利其器—VSCode篇

C++/C++ Runner: 提供了C++代码的 智能感知、程序调试和代码浏览的功能。

新知达人, 工欲善其事,必先利其器—VSCode篇

CMake/CMake Tools: 供了 CMake语言的支持,可以通过CMake的方式进行多文件的编译。

vscode-icons: VSCode的图标插件,对资源管理器下的各个文件定制了不同的图标。

新知达人, 工欲善其事,必先利其器—VSCode篇

GitLens: 进行版本管理的插件,可以在光标处显示代码编写人以及修改时间、修改历史,能够可视化分支、commit等信息,提供便捷而强大的对比功能,方便共同开发时候相关代码管理。

新知达人, 工欲善其事,必先利其器—VSCode篇

Markdown All in One: VSCode的文本编辑插件,对于使用vscode在工程项目中编写readme,requirements,docs等文档提供许多便利的操作:

  • 支持目录生成

  • 支持同步预览

  • 支持公式渲染

  • 支持HTML转换

  • 支持格式化Table

在编写的过程中,程序员可以通过Ctrl+Shift+V快捷键可以切换预览:

新知达人, 工欲善其事,必先利其器—VSCode篇

VSCode的配置流程

使用VSCode编译调试C++工程,只需要创建并修改两个配置文件,即tasks.json和launch.json文件:

  • task.json文件:自动输入编译指令并输出可执行文件;

  • launch.json文件:启动GDB程序调试代码;

下面带大家从配置—>编译—>调试进行一次入门教学:

1. 点击左侧的调试按钮

新知达人, 工欲善其事,必先利其器—VSCode篇

2. 点击运行和调试,如果在Linux下编程,则选择第一项C++(GDB/LLDB):

新知达人, 工欲善其事,必先利其器—VSCode篇

3. 配置launch.json文件

该配置是用来辅助调试的文件,点击g++:生成和调试活动文件,会自动在.vscode文件夹下出现两个配置文件。

新知达人, 工欲善其事,必先利其器—VSCode篇

一般只需要修改两项:"program"和"cwd":

program:修改为项目路径下生成的执行文件即可;

cwd:程序运行时的相对路径,修改为项目路径即可;

新知达人, 工欲善其事,必先利其器—VSCode篇

4. 配置task.json文件

该配置是用来辅助编译的文件,如果上面没有自动生成task文件,可以使用快捷键ctrl+shift+p打开命令行,输入task;然后选择使用模板创建tasks.json文件,再选择Others(即配置通过调用外部命令行完成编译)创建一个task.json文件。

新知达人, 工欲善其事,必先利其器—VSCode篇

task.json文件的目的是在VSCode中直接对代码进行编译和链接,通过设置一系列操作的宏来指导工程如何编译,如何运行,而不是从终端输入g++ -g xxx.cpp等编译链接指令。

新知达人, 工欲善其事,必先利其器—VSCode篇

这里VSCode默认是不支持C++11的,如果开发者需要可以自行在“args”中添加一行:“-std=c++11”即可。

5. 编译程序

配置完成后,点击右下角的Build按钮开始编译工程,或者通过快捷键ctrl + shift + b,编译完后在build目录下生成对应的可执行文件。

新知达人, 工欲善其事,必先利其器—VSCode篇

这里我们会发现以上操作不同于Clion编译过程,需要找到工程中的CMakeLists.txt才能正常运行,而是直接使用g++编译单个文件。那么如何在VSCode中通过cmake进行编译呢?

可以通过编写shell脚本,在bash脚本中用cmake命令查找CMakeLists.txt的内容进行多文件编译链接。此时整个编译调试过程如下:

运行launch.json ——> 运行tasks.json中的task1中的command ——> 运行bash编译脚本 ——> 调用cmake并根据CMakeLists.txt文件编译出可执行文件SIL ——> 开始调试launch.json中program所指的可执行文件SIL。

6. 调试程序

点击右下角小昆虫样式的按钮,即可进入Debug模式。具体的断点调试过程和其他IDE基本一致,设置断点后可单步调试,VSCode的左侧分别是变量窗口,监视窗口,堆栈窗口和断点窗口,底部可以输出运行结果。

新知达人, 工欲善其事,必先利其器—VSCode篇

VSCode如何链接远端服务器?

首先需要在扩展插件中安装remote-ssh工具,然后可以在左侧工具栏中选中Remote Explorer。新增远端目标机器进行config配置,其中包括服务器IP,登录用户名和密钥:

新知达人, 工欲善其事,必先利其器—VSCode篇

最好在搜索页面选择配置好需要ssh登录的host机器,即可链接。可以根据IDE左下角的绿色框检查是否链接成功。

新知达人, 工欲善其事,必先利其器—VSCode篇

更多“VSCode”相关内容

更多“VSCode”相关内容

新知精选

更多新知精选