系列文章


文章目录

  • VS Code
  • 基本配置
  • VS Code插件安装
  • 在线安装
  • 离线安装
  • C/C++环境配置
  • 环境准备
  • 使用实例
  • 基于 VSCode 的远程开发平台
  • 环境准备
  • 问题排查
  • 问题汇总
  • 参考


VS Code

Visual Studio Code(简称VS Code)是一个由微软开发,同时支持Windows 、 Linux和macOS等操作系统且开放源代码的代码编辑器,它支持测试,并内置了Git 版本控制功能,同时也具有开发环境功能,例如代码补全(类似于 IntelliSense)、代码片段和代码重构等。该编辑器支持用户个性化配置,例如改变主题颜色、键盘快捷方式等各种属性和参数,同时还在编辑器中内置了扩展程序管理的功能

  • 官网下载 https://code.visualstudio.com/download
  • Previous release versions 对于目前的高版本vscode对于运行环境有一定的要求,比如自1.86.1版本的Linux minimum requirements update ,根据开发环境和发版信息选择合适的版本
  • VS Code支持便捷版,多个版本共存成为一个可能,比如要在win10开发,偶尔要远程一下CentOS7的环境,那么远程可以选择使用1.85.2版本,而本地开发选择使用最新版本
  • 用户数据目录%APPDATA%\Code,可以使用--user-data-dir指定
  • 插件目录%USERPROFILE%\.vscode\extensions,可以使用--extensions-dir指定
  • 官方文档 https://code.visualstudio.com/docs
  • C/C++插件官方文档 https://code.visualstudio.com/docs/languages/cpp

基本配置

  • 配置glob 模式以排除文件和文件夹,避免在资源管理器中显示中间文件
  • 【首选项】【设置】【文本编辑器】【文件】或者在设置中直接搜 file exclude,比如排除C++的中间文件**/*.o,排除Python的中间文件**/__pycache__

VS Code插件安装

VS Code是轻量级代码编辑器,相对于其他编辑器的一个主要优势是它的大型扩展和主题生态系统。

在线安装

  1. 打开VS Code
  2. 选择主侧栏上扩展视图图标或者使用快键键Ctrl+Shift+X
  3. 搜索插件,比如’C++’
  4. 选择点击安装

离线安装

在线安装快捷方便,在有些情况下安装过程时常中断,导致安装时间过程,那么下载离线包进行安装是个不错选择。

  • 在插件介绍页面找到仓库Repository链接,如 https://github.com/microsoft/vscode-cpptools,找到对应的插件发布链接选择下载对应平台的安装包,如 https://github.com/microsoft/vscode-cpptools/releases
  • 在 https://marketplace.visualstudio.com/ 搜索插件,进入插件页面,如 https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools ,找到上侧的Version Histrory或者右侧的Download Extension,找到对应平台的包进行下载

    安装离线包

C/C++环境配置

在window下安装C/C++环境以及VSCode,并能够简单初步使用,本测试环境如下

  • VS code 1.52
  • Win 10
  • msys2 / Mingw-w64
  • CentOS7

参考官方文档 https://code.visualstudio.com/docs/cpp/config-mingw

环境准备

  • 安装gcc等相关编译链,参照之前的MSYS2开发环境搭建,并将相应的路径加入PATH环境变量中,比如:D:\msys64\mingw64\bin
  • 官网下载VS code,双击安装即可
  • 启动VScode,Ctrl + Shift + X切换到插件窗口,搜C++, 安装C/C++,C++ Intellisense以及`Chinese (Simplified) Language Pack for Visual Studio Code
    等插件

使用实例

  • 在桌面新建demo目录
  • 【文件】-【打开文件夹】选择创建的demo目录
  • 【文件】-【新建文件】demo.cpp
#include <iostream>
#include <vector>
#include <string>

int main(int argc, char *argv[])
{
    std::cout << "Hello World" << std::endl;
    std::vector<std::string> cities{"JiNan", "BeiJing", "ShenZhen"};

    for (auto& city : cities)
    {
        std::cout << city << std::endl;
    }

    return 0;
}
  • 在demo.cpp编辑界面,Ctrl + Shift + P,输入 C/C++,点击 C/C++: 编辑配置 (UI),配置完成后会自动生成.vscode/c_cpp_properties.json
  • 编译器路径,如:D:/msys64/mingw64/bin/g++.exe
  • 编译器参数
  • IntelliSense 模式,我选的 gcc-x64
  • 包含路径,添加非标准化路径下的include路径
  • 在demo.cpp编辑界面,【终端】-【配置默认生成任务】在弹出的选项卡中选择要用做默认生成任务的任务,我这里选择的是C/C++: g++.exe build active file, VSCode会自动生成.vscode/tasks.json文件,文件内容如下
{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "cppbuild",
			"label": "C/C++: g++.exe build active file",
			"command": "D:\\msys64\\mingw64\\bin\\g++.exe",
			"args": [
				"-g",
				"${file}",
				"-o",
				"${fileDirname}\\${fileBasenameNoExtension}.exe"
			],
			"options": {
				"cwd": "D:\\msys64\\mingw64\\bin"
			},
			"problemMatcher": [
				"$gcc"
			],
			"group": {
				"kind": "build",
				"isDefault": true
			},
			"detail": "compiler: D:\\msys64\\mingw64\\bin\\g++.exe"
		}
	]
}
  • 在demo.cpp的编辑界面,【终端】-【运行生成任务】或者快捷键Ctrl + Shift + B,执行编译任务生成demo.exe可执行程序
  • 在demo.cpp的编辑界面,【运行】-【添加配置】在弹出的选项卡中选择环境C++(GDB/LLDB)选在配置,我这里选的第一个 **g++.exe - 生成和调试活动文件 **,自动生成.vscode/launch.json
{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "g++.exe - 生成和调试活动文件",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "D:/msys64/mingw64/bin",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "D:\\msys64\\mingw64\\bin\\gdb.exe",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "C/C++: g++.exe build active file"
        }
    ]
}
  • 在demo.cpp编辑界面,在行号前面出现小手,点击设置断点;【运行】-【启动调试】即可调试程序

基于 VSCode 的远程开发平台

The Remote Development extension pack includes three extensions. See the following articles to get started with each of them:

  • Remote - SSH - Connect to any location by opening folders on a remote machine/VM using SSH.
  • Remote - Containers - Work with a sandboxed toolchain or container-based application inside (or mounted into) a container.
  • Remote - WSL - Get a Linux-powered development experience in the Windows Subsystem for Linux.

本文简单阐述通过SSH连接linux开发环境进行开发的过程

环境准备

  • 准备好的Linux开发环境(这里CentOS7为例)
  • yum install gcc gcc-c++ pkgconfig automake autoconf
  • cmake > 3
  • yum install epel-release
  • yum install cmake3
  • git > 2
  • yum install https://packages.endpointdev.com/rhel/7/os/x86_64/endpoint-repo.x86_64.rpm
  • yum install git
  • 本地安装与OpenSSH兼容的ssh客户端
  • VS Code安装Remote - SSH插件

Win10下安装与OpenSSH兼容的ssh客户端安装有多种方式:

  • Windows10已经预装了OpenSSH客户端 【设置】-【应用】-【应用和功能】-【管理可选功能】,查看OpenSSH客户端是否已安装,没有就点击 添加功能进行添加;
  • Git自带ssh客户端,可以安装https://git-scm.com/download后,将Git的bin加入PATH环境变量,如路径D:\Program Files\Git\usr\bin
  • 搭建MSYS2开发环境,并安装ssh客户端

安装ssh客户端以后,配置SSH免密登录

  1. ssh-keygen -t rsa -P “” 使用默认配置,一路回车即可
  2. ssh-copy-id user@ip 拷贝秘钥到linux上。
    其实该操作是将本机~/.ssh/id_rsa.pub中的内容追加到linux环境的~/.ssh/authorized_keys文件中。如果没有ssh-copy-id命令,可以手动操作,没有~/.ssh/authorized_keys文件需要手动创建,并设置权限0600

问题排查

更新VSCode到1.85.2后发现,左侧的活动栏不显示Remote Explorer图标不见了,不会显示远程创建的项目列表了,卸载重新安装Remote Explorer插件即可

问题汇总

  • VScode:ERROR: Unable to start debugging. Unexpected GDB output from command “-exec-run“

参考

  • 手把手教你配置VS Code远程开发工具,工作效率提升N倍