当前位置: 首页 > ds >正文

在WSL中配置VS Code C++开发环境完整教程

在Windows系统上进行C++开发时,借助Windows Subsystem for Linux (WSL)可以获得接近原生Linux的开发体验。本文将详细介绍如何在WSL环境中配置VS Code,搭建高效的C++开发环境,包括编译器安装、项目创建、代码编写、调试配置等全过程。

环境准备

前置要求

在开始前,请确保已安装以下软件:

  • Visual Studio Code
  • VS Code的WSL扩展
  • Windows Subsystem for Linux (WSL)及所选Linux发行版(本文以Ubuntu为例)

设置Linux开发环境

  1. 启动WSL终端:在Windows搜索栏输入"Ubuntu"并打开

Ubuntu in Start Menu

  1. 首次启动会要求设置用户名和密码,请记住此密码,后续使用sudo命令时需要

  2. 更新系统包列表并安装GNU编译器工具和GDB调试器:

sudo apt-get update
sudo apt-get install build-essential gdb
  1. 验证安装是否成功:
whereis g++
whereis gdb

如果安装成功,会显示g++和gdb的路径信息。

  1. 创建项目目录:
mkdir projects
cd projects
mkdir helloworld
cd helloworld

在WSL中启动VS Code

在WSL终端中,进入项目目录并输入以下命令启动VS Code:

code .

首次启动时,VS Code会自动下载并安装WSL服务器组件。成功启动后,VS Code窗口标题栏会显示"WSL: Ubuntu",状态栏会显示远程连接状态。

Remote context in the Status bar

安装C/C++扩展

  1. 在VS Code中打开扩展面板(Ctrl+Shift+X)
  2. 搜索"C/C++"扩展(由Microsoft提供)
  3. 如果已在本地安装,点击"Install in WSL"按钮将其安装到WSL环境中

Install in WSL button

安装完成后需要重新加载VS Code以生效。

创建和编写C++代码

  1. 在VS Code文件资源管理器中,点击"新建文件"按钮,创建helloworld.cpp

New File title bar button

  1. 粘贴以下示例代码:
#include <iostream>
#include <vector>
#include <string>using namespace std;int main()
{vector<string> msg {"Hello", "C++", "World", "from", "VS Code", "and the C++ extension!"};for (const string& word : msg){cout << word << " ";}cout << endl;
}
  1. 保存文件(Ctrl+S)

探索IntelliSense功能

VS Code的C/C++扩展提供了强大的IntelliSense功能:

  • 悬停在vectorstring上查看类型信息
  • 输入msg.时会自动显示成员函数列表
  • 自动补全功能可通过Tab键触发

Statement completion IntelliSense

运行C++程序

  1. 确保helloworld.cpp是当前活动文件
  2. 点击编辑器右上角的"播放"按钮
  3. 在弹出的编译器选择中,选择"g++ build and debug active file"

C++ debug configuration dropdown

VS Code会自动生成tasks.json文件,用于配置构建任务。成功运行后,在集成终端中会看到输出:

Hello C++ World from VS Code and the C++ extension!

理解tasks.json

自动生成的tasks.json位于.vscode目录下,内容如下:

{"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."}]
}

关键参数说明:

  • command: 指定编译器路径(g++)
  • args: 编译参数,-g表示生成调试信息
  • ${file}: 当前活动文件
  • ${fileDirname}/${fileBasenameNoExtension}: 输出可执行文件路径和名称

调试C++程序

  1. 在代码行号旁点击设置断点(或按F9)
  2. 从播放按钮下拉菜单中选择"Debug C/C++ File"

screenshot of breakpoint in helloworld.cpp

调试控制面板提供了常用调试功能:

  • 继续(F5)
  • 单步跳过(F10)
  • 单步进入(F11)
  • 单步退出(Shift+F11)
  • 重启(Ctrl+Shift+F5)
  • 停止(Shift+F5)

Debugging controls

在调试过程中,可以通过"变量"窗口查看当前变量值,通过"监视"窗口添加自定义监视表达式。

Debugging windows

自定义调试配置

如需自定义调试设置,可以创建launch.json文件:

  1. 打开"运行和调试"面板(Ctrl+Shift+D)
  2. 点击"创建launch.json文件"
  3. 选择"C++ (GDB/LLDB)"环境
  4. 选择"g++ build and debug active file"配置

生成的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"}]
}

关键配置说明:

  • program: 指定要调试的可执行文件
  • args: 传递给程序的命令行参数
  • stopAtEntry: 设置为true可在main函数入口处暂停
  • preLaunchTask: 指定调试前执行的构建任务

高级配置:c_cpp_properties.json

如需自定义C/C++扩展配置(如编译器路径、包含路径、C++标准等):

  1. 打开命令面板(Ctrl+Shift+P)
  2. 运行"C/C++: Edit Configurations (UI)"命令
  3. 在配置界面中修改设置,VS Code会自动生成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. 编译器未找到

问题:提示"g++: command not found"
解决:确保已安装build-essential包:

sudo apt-get install build-essential

2. 调试器无法启动

问题:调试时提示"miDebuggerPath"配置错误
解决:检查gdb是否安装:

sudo apt-get install gdb
whereis gdb  # 确认路径

更新launch.json中的miDebuggerPath为正确路径。

3. IntelliSense不工作

问题:代码提示和自动补全功能失效
解决

  1. 确保C/C++扩展已正确安装在WSL中
  2. 检查c_cpp_properties.json中的编译器路径是否正确
  3. 重启VS Code

总结

通过本文教程,你已经学会了如何在WSL环境中配置VS Code进行C++开发,包括:

  • 设置WSL和Linux开发环境
  • 安装必要的工具和扩展
  • 创建、编译、运行和调试C++程序
  • 配置自定义构建和调试任务

这种开发方式结合了Windows的易用性和Linux的开发环境优势,特别适合需要跨平台开发的C++项目。

后续学习

  • 探索VS Code更多功能:代码片段、Git集成、任务自动化
  • 学习CMake构建系统,管理复杂项目
  • 尝试使用Docker容器化开发环境
  • 深入学习C++语言特性和标准库

祝你在WSL+VS Code的开发之路上越走越远!

http://www.xdnf.cn/news/16690.html

相关文章:

  • linux中简易云盘系统项目实战:基于 TCP协议的 Socket 通信、json数据交换、MD5文件区别与多用户文件管理实现
  • 《C++初阶之STL》【list容器:详解 + 实现】
  • 低速信号设计之 UART 篇
  • 鸿蒙网络编程系列59-仓颉版TLS回声服务器示例
  • 如何迁移gitlab到另一台服务器
  • 图像认知与OpenCV | Day5:图像预处理(4)
  • C++20协程实战:高效网络库、手机终端、多媒体开发开发指南
  • Javaweb - 13 - AJAX
  • Qt|槽函数耗时操作阻塞主界面问题
  • Chrome 提示 “此扩展程序不再受支持”(MacOS/Windows)
  • WindowsAPI|每天了解几个winAPI接口之网络配置相关文档Iphlpapi.h详细分析六
  • C++异常捕获:为何推荐按引用(by reference)捕获?
  • 华为昇腾芯片:多模态模型国产化的硬核突破
  • Ext JS极速项目之 Coworkee
  • ETH 交易流程深度技术详解
  • Linux进程概念(五)进程地址空间
  • 凸优化:凸函数的一些常用性质
  • 低成本嵌入式Linux开发方案:通过配置文件实现参数设置
  • 基于黑马教程——微服务架构解析(二):雪崩防护+分布式事务
  • 如何在 Ubuntu 24.04 或 22.04 Linux 上安装和使用 NoMachine
  • JavaScript 回调函数讲解_callback
  • 力扣7:整数反转
  • golang--通道和锁
  • 做了一款小而美的本地校验器
  • jimfs:Java内存文件系统,脱离磁盘IO瓶颈利器
  • 使用Docker在Rocky Linux 9.5上在线部署LangFlow
  • 【力扣热题100】哈希——两数之和
  • 基于深度学习的医学图像分析:使用3D CNN实现肿瘤检测
  • 智慧工地系统:科技赋能建筑新未来
  • 采用黑翅鸢优化算法BKA-CNN-LSTM、CNN-LSTM、LSTM、CNN四模型多变量回归预测,多输入单输出(Matlab)