Ubuntu系统VSCode配置C++开发环境

前言

Visual Studio Code(简称 VSCode)作为一款轻量级、跨平台的代码编辑器,凭借其丰富的扩展生态和出色的性能,成为众多开发者首选的开发工具。在 Ubuntu 20.04 系统下配置 C++ 开发环境,可以让开发者享受到 Linux 系统的稳定性和 VSCode 的便捷性。

本文将详细介绍从零开始在 Ubuntu 20.04 系统上配置完整的 C++ 开发环境,包括 VSCode 安装、编译器配置、调试器设置以及 IntelliSense 智能感知配置,帮助初学者快速搭建高效的 C++ 开发平台。

测试环境:

  • 操作系统:Ubuntu 20.04 LTS
  • 编辑器:Visual Studio Code 1.x
  • 编译器:GCC 9.4.0 / G++ 9.4.0
  • 调试器:GDB 9.2

一、安装 Visual Studio Code

方法一:通过官方仓库安装(推荐)

这是最推荐的安装方式,可以确保获得最新版本的 VSCode,并且能够通过系统包管理器进行更新。

步骤 1:添加 Microsoft GPG 密钥

打开终端,执行以下命令下载并导入 Microsoft 的 GPG 密钥:

curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
sudo install -o root -g root -m 644 microsoft.gpg /etc/apt/trusted.gpg.d/

步骤 2:添加 VSCode 仓库

将 VSCode 的官方仓库添加到系统源列表中:

sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list'

步骤 3:更新软件包列表并安装 VSCode

sudo apt update
sudo apt install code

安装完成后,可以在应用程序菜单中找到 Visual Studio Code,或在终端中输入 code 启动。

方法二:通过 Snap 安装

Ubuntu 20.04 默认支持 Snap 包管理器,可以通过以下命令快速安装:

sudo snap install code --classic

这种方式安装简单快捷,但版本可能略滞后于官方仓库。

方法三:通过 .deb 包安装

VSCode 官方网站 下载 .deb 安装包,然后使用以下命令安装:

sudo dpkg -i code_*.deb
sudo apt install -f  # 修复可能的依赖问题

二、安装 C/C++ 编译器和调试器

2.1 安装 build-essential

build-essential 是一个元数据包,包含了编译 C/C++ 程序所需的核心工具链,包括 GCC 编译器、G++ 编译器、Make 构建工具等。

sudo apt install build-essential

2.2 安装 GDB 调试器

GDB(GNU Debugger)是 Linux 下标准的命令行调试器,VSCode 的 C/C++ 调试功能依赖于它。

sudo apt install gdb

2.3 验证安装

安装完成后,验证各工具的版本以确保安装成功:

查看 GCC 版本:

gcc --version

输出示例:

gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

查看 G++ 版本:

g++ --version

查看 Make 版本:

make --version

查看 GDB 版本:

gdb --version

输出示例:

GNU gdb (Ubuntu 9.2-0ubuntu1~20.04.1) 9.2
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

三、安装 VSCode C/C++ 扩展

3.1 打开扩展视图

启动 VSCode 后,点击左侧活动栏的扩展图标(或使用快捷键 Ctrl+Shift+X)打开扩展视图。

3.2 搜索并安装 C/C++ 扩展

在搜索框中输入 “C/C++”,找到由 Microsoft 提供的 “C/C++” 扩展(全称:C/C++ Extension Pack),点击 “Install” 按钮进行安装。

该扩展包包含以下核心功能:

  • IntelliSense:代码自动补全、参数提示、快速信息
  • 调试支持:基于 GDB/LLDB 的图形化调试界面
  • 代码导航:跳转到定义、查找引用、符号搜索
  • 代码片段:常用的 C/C++ 代码模板

3.3 可选扩展推荐

根据开发需求,还可以安装以下扩展以提升开发体验:

  • Code Runner:一键运行代码片段,适合快速测试
  • C/C++ Compile Run:简化编译和运行流程
  • Better C++ Syntax:改进 C++ 语法高亮
  • Include Autocomplete:头文件自动补全

安装完成后,点击 “Reload Required” 按钮重新加载 VSCode 以激活扩展。


四、配置 C++ 开发环境

VSCode 本身只是一个编辑器,需要通过配置文件来告诉它如何编译、调试和提供智能感知。对于 C++ 项目,主要涉及三个配置文件,它们都位于项目根目录下的 .vscode 文件夹中:

  • tasks.json:定义编译任务
  • launch.json:定义调试配置
  • c_cpp_properties.json:定义 IntelliSense 设置

4.1 创建工作区

为了方便管理配置,建议为每个 C++ 项目创建独立的工作区(文件夹)。

mkdir ~/cpp_projects
cd ~/cpp_projects
code .

这将打开 VSCode 并将当前文件夹设置为工作区根目录。

4.2 配置 tasks.json(编译任务)

tasks.json 用于告诉 VSCode 如何编译 C++ 源文件。

创建方法:

  1. 在工作区中创建一个名为 hello.cpp 的文件
  2. 打开该文件
  3. 点击菜单栏 TerminalConfigure Tasks...
  4. 选择 C/C++: g++ build active file

VSCode 会自动生成 .vscode/tasks.json 文件,内容如下:

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

关键配置说明:

字段 说明
type 任务类型,cppbuild 表示 C++ 构建任务,也可改为 shell
label 任务名称,需与 launch.json 中的 preLaunchTask 保持一致
command 编译器路径,可使用 /usr/bin/g++ 或直接写 g++
args 编译器参数数组
-g 生成调试信息,供 GDB 使用
${file} 当前打开的文件
${fileDirname} 当前文件所在目录
${fileBasenameNoExtension} 当前文件名(不含扩展名)
problemMatcher 问题匹配器,$gcc 用于解析 GCC 输出的错误信息
group.isDefault 设为 true 表示这是默认构建任务,可通过 Ctrl+Shift+B 快速调用

自定义编译选项:

如果需要启用 C++17 标准或添加其他编译选项,可以修改 args 数组:

"args": [
    "-fdiagnostics-color=always",
    "-g",
    "-std=c++17",
    "-Wall",
    "-Wextra",
    "${file}",
    "-o",
    "${fileDirname}/${fileBasenameNoExtension}"
]
  • -std=c++17:启用 C++17 标准
  • -Wall -Wextra:启用更多警告信息

4.3 配置 launch.json(调试配置)

launch.json 用于配置调试环境,控制 GDB 调试器的行为。

创建方法:

  1. 打开 hello.cpp 文件
  2. 点击左侧活动栏的"运行和调试"图标(或按 F5
  3. 点击"创建 launch.json 文件"
  4. 选择 C/C++: (gdb) Launch

VSCode 会自动生成 .vscode/launch.json 文件,内容如下:

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

关键配置说明:

字段 说明
name 调试配置名称,显示在调试下拉菜单中
type 调试器类型,cppdbg 表示使用 C/C++ 调试扩展
request 请求类型,launch 表示启动新进程
program 需要调试的可执行文件路径
args 传递给程序的命令行参数
stopAtEntry 是否在程序入口处停止,false 表示不暂停,true 表示在 main 函数入口暂停
cwd 工作目录
externalConsole 是否使用外部控制台,false 使用 VSCode 内置终端
MIMode 调试器模式,gdb 表示使用 GDB
setupCommands 调试器启动时执行的命令,-enable-pretty-printing 启用美化打印
preLaunchTask 调试前执行的任务,必须与 tasks.json 中的 label 一致
miDebuggerPath GDB 调试器路径

调试技巧:

  • 设置断点:点击行号左侧的红点区域
  • 单步执行:F10(跳过)、F11(进入)
  • 继续运行:F5
  • 停止调试:Shift+F5
  • 查看变量:在左侧"变量"面板中查看当前作用域内的变量值

4.4 配置 c_cpp_properties.json(IntelliSense 配置)

c_cpp_properties.json 用于配置 IntelliSense(智能感知)的行为,包括头文件搜索路径、编译器路径、C/C++ 标准等。

创建方法:

  1. Ctrl+Shift+P 打开命令面板
  2. 输入并选择 C/C++: Edit Configurations (JSON)

VSCode 会自动生成 .vscode/c_cpp_properties.json 文件,内容如下:

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "c17",
            "cppStandard": "gnu++14",
            "intelliSenseMode": "linux-gcc-x64"
        }
    ],
    "version": 4
}

关键配置说明:

字段 说明
name 配置名称,可根据不同平台设置多个配置
includePath 头文件搜索路径数组,${workspaceFolder}/** 表示递归搜索工作区
defines 预处理器宏定义,如 ["DEBUG", "_DEBUG"]
compilerPath 编译器路径,IntelliSense 使用此编译器获取系统头文件路径
cStandard C 语言标准,可选 c89c99c11c17
cppStandard C++ 语言标准,可选 c++98c++11c++14c++17c++20
intelliSenseMode IntelliSense 模式,应与编译器和平台匹配

常用 C++ 标准:

  • gnu++14:C++14 + GNU 扩展(Ubuntu 20.04 默认)
  • gnu++17:C++17 + GNU 扩展
  • c++20:纯 C++20 标准(无 GNU 扩展)

如果需要使用 C++17 或更高版本,修改 cppStandard 字段即可:

"cppStandard": "gnu++17"

五、测试配置

5.1 创建测试文件

在工作区根目录创建 hello.cpp 文件,输入以下代码:

#include <iostream>
#include <string>
#include <vector>

using namespace std;

int main() {
    // 输出欢迎信息
    cout << "Hello, Ubuntu 20.04 C++ Development!" << endl;
    
    // 测试字符串
    string name = "VSCode";
    cout << "Welcome to " << name << " on Ubuntu 20.04!" << endl;
    
    // 测试向量
    vector<int> numbers = {1, 2, 3, 4, 5};
    cout << "Numbers: ";
    for (const auto& num : numbers) {
        cout << num << " ";
    }
    cout << endl;
    
    return 0;
}

5.2 编译和运行

方法一:使用 VSCode 任务

  1. 打开 hello.cpp 文件
  2. Ctrl+Shift+B 运行默认构建任务
  3. 在终端中运行生成的可执行文件:
./hello

预期输出:

Hello, Ubuntu 20.04 C++ Development!
Welcome to VSCode on Ubuntu 20.04!
Numbers: 1 2 3 4 5

方法二:使用终端手动编译

g++ -g -std=c++17 hello.cpp -o hello
./hello

方法三:使用 Code Runner 扩展

如果安装了 Code Runner 扩展,可以右键点击编辑器,选择 Run Code,或直接按 Ctrl+Alt+N

5.3 调试测试

  1. main 函数的某一行(如 string name = "VSCode";)设置断点

  2. F5 启动调试

  3. 调试器会在断点处暂停

  4. 使用以下快捷键进行调试操作:

    • F10:单步跳过
    • F11:单步进入
    • Shift+F5:停止调试
    • Ctrl+Shift+F5:重启调试
  5. 在左侧"变量"面板中查看 namenumbers 的值


六、高级配置

6.1 多文件项目配置

对于包含多个源文件的项目,建议使用 Makefile 或 CMake 管理构建过程。

使用 Makefile:

在项目根目录创建 Makefile

CXX = g++
CXXFLAGS = -g -std=c++17 -Wall -Wextra
TARGET = main
SRCS = main.cpp utils.cpp
OBJS = $(SRCS:.cpp=.o)

all: $(TARGET)

$(TARGET): $(OBJS)
	$(CXX) $(CXXFLAGS) -o $@ $^

%.o: %.cpp
	$(CXX) $(CXXFLAGS) -c $< -o $@

clean:
	rm -f $(OBJS) $(TARGET)

.PHONY: all clean

修改 tasks.json

{
    "tasks": [
        {
            "type": "shell",
            "label": "Make Build",
            "command": "make",
            "args": [],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": ["$gcc"]
        }
    ],
    "version": "2.0.0"
}

使用 CMake:

创建 CMakeLists.txt

cmake_minimum_required(VERSION 3.10)
project(MyProject)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

add_executable(main main.cpp utils.cpp)

修改 tasks.json

{
    "tasks": [
        {
            "type": "shell",
            "label": "CMake Build",
            "command": "cmake",
            "args": ["--build", "${workspaceFolder}/build"],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ],
    "version": "2.0.0"
}

6.2 中文输出乱码问题

如果在终端输出中文出现乱码,可以在编译时添加字符集参数:

"args": [
    "-fdiagnostics-color=always",
    "-g",
    "-fexec-charset=UTF-8",
    "-finput-charset=UTF-8",
    "${file}",
    "-o",
    "${fileDirname}/${fileBasenameNoExtension}"
]

或者在代码中使用 setlocale

#include <clocale>
#include <iostream>

using namespace std;

int main() {
    setlocale(LC_ALL, "zh_CN.UTF-8");
    cout << "你好,世界!" << endl;
    return 0;
}

6.3 配置全局默认设置

如果希望所有 C++ 项目都使用相同的配置,可以修改用户级别的设置:

  1. Ctrl+Shift+P 打开命令面板
  2. 输入并选择 Preferences: Open Settings (JSON)
  3. 添加以下配置:
{
    "C_Cpp.default.compilerPath": "/usr/bin/g++",
    "C_Cpp.default.cppStandard": "gnu++17",
    "C_Cpp.default.intelliSenseMode": "linux-gcc-x64",
    "editor.formatOnSave": true,
    "files.associations": {
        "*.hpp": "cpp"
    }
}

七、常见问题与解决方案

7.1 找不到头文件

问题: IntelliSense 提示找不到某些头文件,如 <iostream>

解决方案:

  1. 检查 c_cpp_properties.json 中的 compilerPath 是否正确
  2. 确保已安装 build-essential
  3. 手动添加系统头文件路径:
"includePath": [
    "${workspaceFolder}/**",
    "/usr/include/c++/9",
    "/usr/include/x86_64-linux-gnu/c++/9"
]

7.2 调试时无法命中断点

问题: 设置断点后,调试器直接运行完毕,没有在任何断点处暂停。

解决方案:

  1. 确保编译时添加了 -g 标志
  2. 检查 launch.json 中的 program 路径是否正确指向可执行文件
  3. 确认 preLaunchTasktasks.json 中的 label 一致
  4. 尝试清理并重新编译:
rm -f hello
g++ -g hello.cpp -o hello

7.3 IntelliSense 波浪线误报

问题: 代码可以正常编译,但 IntelliSense 显示红色波浪线提示错误。

解决方案:

  1. Ctrl+Shift+P,输入 C/C++: Reset IntelliSense Database
  2. 重启 VSCode
  3. 检查 c_cpp_properties.json 中的 cppStandard 是否与编译时使用的标准一致

7.4 权限问题

问题: 编译或运行时提示权限不足。

解决方案:

确保工作区文件夹属于当前用户:

sudo chown -R $USER:$USER ~/cpp_projects

7.5 VSCode 启动缓慢

问题: VSCode 启动或打开大项目时响应缓慢。

解决方案:

  1. 禁用不必要的扩展
  2. settings.json 中添加:
{
    "files.watcherExclude": {
        "**/.git/objects/**": true,
        "**/node_modules/**": true,
        "**/build/**": true
    },
    "search.exclude": {
        "**/node_modules": true,
        "**/build": true
    }
}

八、总结

本文详细介绍了在 Ubuntu 20.04 系统下配置 VSCode C++ 开发环境的完整流程,主要包括:

  1. 安装 VSCode:通过官方仓库、Snap 或 .deb 包三种方式安装
  2. 安装编译工具链:安装 build-essentialgdb
  3. 安装 C/C++ 扩展:配置 IntelliSense 和调试支持
  4. 配置三个核心文件
    • tasks.json:定义编译任务
    • launch.json:定义调试配置
    • c_cpp_properties.json:定义 IntelliSense 设置
  5. 测试配置:编写测试代码,验证编译、运行和调试功能
  6. 高级配置:多文件项目管理、中文乱码处理、全局默认设置
  7. 常见问题解决:头文件找不到、断点不命中、IntelliSense 误报等

通过以上配置,你可以在 Ubuntu 20.04 上获得高效、便捷的 C++ 开发体验。VSCode 的轻量级特性和丰富的扩展生态,使其成为 Linux 下 C++ 开发的理想选择。

对于大型项目,建议结合 CMake 或 Make 使用,以获得更好的项目管理和跨平台支持。随着对 VSCode 的深入使用,你还可以探索更多扩展和功能,进一步提升开发效率。


参考资料

更多推荐