使用VS Code和WSL开发C/C++的简单配置

使用VS Code和WSL开发C/C++的简单配置

使用情形

The Windows Subsystem for Linux 适用于Linux的Windows子系统(简称WSL)可以允许开发者安装需要的Linux发行版,并且能够安装其中的大部分应用程序直接调用。开发者无需安装额外的虚拟机或者设置双系统,还可以同时享受Linux强大的软件生态和Windows便利的图形化界面。

本文主要介绍基于VSCode远程连接WSL进行C/C++开发时,对于调试功能的配置。

VSCode Debug简要介绍

VSCode的调试功能和传统IDE基本一致。不同之处在于VSCode本身不包括编译器和调试器。它的图形化界面是通过调用环境中的编译器和调试器来进行编译和调试的。对于C/C++来说,常用的工具链主要有GNU、llvm两大类,VSCode都提供了相应的支持。

扩展插件选择了微软提供的C/C++插件,VSCode插件市场中搜索或者从官方链接下载都可以

ps. llvm工具链与此插件在WSL中有BUG,因此建议使用GNU。llvm工具链可以按照这篇文章指引进行配置 几乎无痛的VSCode+clangd+lldb+cmake配置C/C++开发环境指南

对于Ubuntu,GNU工具链安装如下。

sudo apt-get update
sudo apt-get install build-essential gdb

在你工作目录下调用.code指令就可以用VSCode打开当前文件夹

cd ~/projects/helloworld
code .

首次打开,VSCode会显示一条信息“Installing VS Code Server”,这说明VSCode正在WSL中下载一个小型服务器应用,用于桌面端和WSL进行通讯。下载完成后,VSCode会打开对应的文件夹,即工作空间(workspace),这里是helloworld。并在左下角状态栏里显示"WSL:Ubuntu"。如果下载失败,也可以进入VSCode市场搜索WSL下载

后续你就可以在左侧远程资源管理器或者最近打开的文件中再次打开文件夹。其他操作就不再赘述,可以自行进行探索。

后续步骤将会在项目目录下生成.vscode文件夹,并在其中生成三个文件,功能如下:

  • c_cpp_properties.json 编译器路径和智能提示设置
  • task.json 构建说明
  • launch.json 调试器设置

由于微软文档写的非常详细,感觉没什么写的必要了,后续只贴参数和链接了

task配置

task.json

{
    "version": "2.0.0",
  "tasks": [
      {
          "type": "shell",
      "label": "C/C++: g++ build active file",
      "command": "/usr/bin/g++",
      "args": ["-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}"],
      "options": {
          "cwd": "/usr/bin"
      },
      "problemMatcher": ["$gcc"],
      "group": {
          "kind": "build",
        "isDefault": true
      },
      "detail": "Task generated by Debugger."
    }
  ]
}

ps. 各个参数含义请看微软文档

launch配置

launch.json

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "C/C++: g++ build and debug active file",
      "type": "cppdbg",
      "request": "launch",
      "program": "${fileDirname}/${fileBasenameNoExtension}",
      "args": [],
      "stopAtEntry": false,
      "cwd": "${workspaceFolder}",
      "environment": [],
      "externalConsole": false,
      "MIMode": "gdb",
      "miDebuggerPath": "/usr/bin/gdb",
      "setupCommands": [
        {
          "description": "Enable pretty-printing for gdb",
          "text": "-enable-pretty-printing",
          "ignoreFailures": true
        }
      ],
      "preLaunchTask": "C/C++: g++ build active file"
    }
  ]
}

ps. 各个参数含义请看微软文档

C/C++ 配置

c_cpp_properties.json

{
  "configurations": [
    {
      "name": "Linux",
      "includePath": ["${workspaceFolder}/**"],
      "defines": [],
      "compilerPath": "/usr/bin/gcc",
      "cStandard": "c11",
      "cppStandard": "c++17",
      "intelliSenseMode": "clang-x64"
    }
  ],
  "version": 4
}

参考来源

[1] Using C++ and WSL in VS Code: https://code.visualstudio.com/docs/cpp/config-wsl

[2] Variables Reference: https://code.visualstudio.com/docs/editor/variables-reference;

[3] 几乎无痛的VSCode+clangd+lldb+cmake配置C/C++开发环境指南: https://zhuanlan.zhihu.com/p/566365173

posted @   Xsuns  阅读(1362)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示