欢迎光临
我们一直在努力

Ubuntu 20.04 上零基础搭建 VS Code + C++ 开发环境(VS Code + CMake)

📋 前言

本文将详细介绍如何在Ubuntu系统下搭建一个完整的C++开发环境,包括VS Code编辑器配置、CMake构建系统、代码格式化、调试等功能,并完成一个完整的c++项目构建,并实现VSCode的一键编译配置以及自动优化格式。本人之前一直在windows环境中进行c++开发,最近要转入Ubuntu系统进行c++开发,因此记录如何在ubuntu下的vscode中进行c++开发的基本配置。

环境要求:

  • Ubuntu 18.04+ (其他Linux发行版类似,本文用的Ubuntu20.04为例子)
  • 网络连接良好
  • 具备基本的Linux命令行操作能力

本文涵盖内容:

  • ✅ 基础开发环境搭建
  • ✅ VS Code编辑器配置
  • ✅ 手把手带你用cmake配置运行一个c++代码
  • ✅ CMake项目结构设计
  • ✅ vscode中一键编译运行配置
  • ✅ 代码格式化自动化
  • ✅ IntelliSense智能提示配置

🛠️ 一、开发环境准备

1.1 安装基础开发工具

# 更新包管理器
sudo apt update

# 安装编译工具链和构建系统
sudo apt install build-essential cmake gdb

可以如下命令检查是否安装成功:

# 查看build-essential 版本
dpkg -s build-essential | grep Version

# 查看gdb版本
gdb –version

# 查看cmake版本
cmake –version

安装成功会输出如下内容。 请添加图片描述

工具说明:

  • build-essential: 包含gcc/g++编译器、make工具等基础编译环境
  • cmake: 跨平台构建系统,用于管理复杂项目的编译过程
  • gdb: GNU调试器,用于程序调试

1.2 安装VS Code编辑器

  • 下载安装VS Code

    • 官网地址:https://code.visualstudio.com/
    • 选择.deb包下载,双击安装或使用命令: 选择.deb下载即可自动下载。 请添加图片描述
  • 安装必要插件 打开VS Code,按Ctrl+Shift+X(或者按左边那个方块图标)进入扩展市场,搜索并安装如下插件:

    • Chinese (Simplified) (简体中文):提供汉化,安装完成后会自动重启软件
    • C/C++ (Microsoft): 提供语法高亮、智能提示、调试支持,安装后应该会自动安装其他相关插件
    • CMake Tools: CMake项目管理和构建
    • Clang-Format: 代码自动格式化 请添加图片描述

  • 🏗️ 二、项目结构设计

    2.1 创建标准化项目目录

    ctrl+alt+t 打开终端,输入如下命令:

    # 创建项目根目录
    mkdir -p ~/MyCppProject/{src,include}
    cd ~/MyCppProject

    # 进入vscode
    code .

    请添加图片描述

    推荐的项目结构:

    MyCppProject
    ├── CMakeLists.txt # CMake构建配置文件
    ├── src # 源代码目录
    │ └── main.cpp # 主程序入口
    ├── include # 头文件目录
    │ └── main.h # 头文件声明
    └── .vscode # VS Code配置目录
    ├── c_cpp_properties.json #这个在后面会提供代码
    ├── tasks.json #这个在后面会提供代码
    └── settings.json #这个在后面会提供代码

    按照上面结构新建文件和文件夹。在如图蓝色框内新建文件,命名为CMakeLists.txt,新建文件夹命名为.vscode。右击文件夹生成对应的文件。 请添加图片描述

    文件生成后如下图: 请添加图片描述

    为什么要这样组织目录?

    • src/include分离: 便于头文件管理,避免循环依赖
    • CMakeLists.txt: 使用现代化构建系统,支持跨平台编译

    2.2 编写示例代码

    创建 src/main.cpp:

    #include <iostream>

    int main() {

    std::cout << "Hello, C++ World!" << std::endl;

    return 0;
    }

    创建 include/main.h:

    #ifndef MAIN_H
    #define MAIN_H

    #endif


    ⚙️ 三、CMake构建系统配置

    3.1 编写CMakeLists.txt

    在项目根目录创建CMakeLists.txt,下面的是完整的示例,直接复制即可:

    # 指定CMake最低版本要求 这个要根据项目要求,初学阶段是足够的
    cmake_minimum_required(VERSION 3.16)
    #— 这部分基本上不用动,可以认为是固定搭配,在基础学习环节是足够的
    # 设置项目名称
    project(MyCppProject)

    # 设置C++标准(推荐C++17或C++14)
    set(CMAKE_CXX_STANDARD 17)
    set(CMAKE_CXX_STANDARD_REQUIRED ON)

    # 设置构建类型(Release版本会进行优化)
    set(CMAKE_BUILD_TYPE Release)

    # 启用详细的编译信息输出
    set(CMAKE_VERBOSE_MAKEFILE ON)

    #==============================================================================
    # 设置头文件搜索路径
    #==============================================================================
    include_directories(
    ${PROJECT_SOURCE_DIR}/include # 项目自定义头文件
    /usr/local/include # 本地安装的库
    /usr/include # 系统标准库
    )

    #==============================================================================
    # 设置库文件搜索路径
    #==============================================================================
    link_directories(
    /usr/local/lib # 本地安装的库文件
    /usr/lib # 系统库文件
    )

    #==============================================================================
    # 创建可执行文件,这里是把可执行文件默认为了项目名,可以自己修改
    # 这里的可执行文件的名字是 ${PROJECT_NAME} 这个意思是项目的名字,就是project()括号里的内容
    #==============================================================================
    add_executable(${PROJECT_NAME}
    src/main.cpp
    )

    #==============================================================================
    # 链接外部库 这里由于没有外部库因此为空
    #==============================================================================
    target_link_libraries(${PROJECT_NAME}

    )

    CMake关键概念解释:

    • project(): 定义项目名称,生成的可执行文件将使用此名称
    • include_directories(): 告诉编译器在哪里查找头文件
    • add_executable(): 指定要编译的源文件和生成的可执行文件名
    • target_link_libraries(): 链接需要的外部库

    3.2 项目构建

    # 进入项目目录
    cd ~/MyCppProject

    # 创建并进入构建目录
    mkdir -p build && cd build

    # 生成Makefile
    cmake ..

    # 编译项目
    make

    # 运行程序
    ./MyCppProject

    编译过程如下图: 请添加图片描述

    执行命令,会显示输出结果: 请添加图片描述

    构建过程说明:

  • cmake ..: 在build目录中生成Makefile,..表示CMakeLists.txt在上级目录
  • make: 根据Makefile编译源代码 如此一个基于cmake的项目就搭建完成。

  • 🚀 四、VS Code一键编译配置

    这部分是为了让开发者更加方便而做的一键编译运行,方便在vscode中的调试:

    4.1 配置tasks.json(适用于项目级别的)

    在项目根目录创建.vscode/tasks.json,并将如下代码复制到里面并保存:

    {
    "version": "2.0.0",
    "tasks": [
    {
    "label": "cmake-build",
    "type": "shell",
    "command": "cmake",
    "args": [
    "–build",
    "build"
    ],
    "problemMatcher": [
    "$gcc"
    ]
    },
    {
    "label": "run-executable",
    "type": "shell",
    "command": "${workspaceFolder}/build/MyCppProject",
    "windows": {
    "command": "${workspaceFolder}\\\\build\\\\MyCppProject.exe"
    }
    },
    {
    "label": "build and run",
    "dependsOrder": "sequence",
    "dependsOn": [
    "cmake-build",
    "run-executable"
    ],
    "group": {
    "kind": "build",
    "isDefault": true
    }
    }
    ]
    }

    使用方法:

    • 在main.cpp界面,按Ctrl+Shift+B,然后下面终端会自动编译并运行 请添加图片描述

    • 注意,这个方法只能针对一个项目,用的时候要把里面的可执行文件换成CMakelists.txt中生成的可执行文件,比如这次的可执行文件的名字是MyCppProject,可以在上面CMakelists.txt的注释中标注了可执行文件的名字。

    {
    "label": "run-executable",
    "type": "shell", #这里就是可执行文件的名字
    "command": "${workspaceFolder}/build/MyCppProject",
    "windows": { #这里也要根据可执行文件的名字修改
    "command": "${workspaceFolder}\\\\build\\\\MyCppProject.exe"
    }
    },

    4.2 其他编译方案

    方案1:Code Runner插件(适合单文件练习)

    在vscode安装Code Runner插件: 请添加图片描述

    • 优点:右键选择 Run Code 可运行,操作简单,不需要经过cmake 请添加图片描述

    • 缺点:不支持交互式输入(如std::cin),不适合复杂项目


    🎨 五、代码格式化配置

    5.1 安装clang-format

    在终端中运行:

    sudo apt install clang-format

    5.2 创建格式化配置文件

    在项目根目录创建.clang-format: 请添加图片描述

    将如下内容复制进去并保存:

    BasedOnStyle: Google

    IndentWidth: 4

    AccessModifierOffset: -4 # 让private/protected/public关键字顶格

    ColumnLimit: 0 # 单行最大字符数,0为不限制

    5.3 VS Code自动格式化配置

    在.vscode/settings.json中添加并保存:

    {
    "editor.formatOnSave": true,
    "editor.formatOnType": true,
    "editor.formatOnPaste": true,
    "[cpp]": {
    "editor.defaultFormatter": "xaver.clang-format"
    },
    "[c]": {
    "editor.defaultFormatter": "xaver.clang-format"
    },
    "clang-format.executable": "/usr/bin/clang-format",
    "clang-format.style": "file"
    }

    这样的话一般情况下输入 ;即可对齐格式: 以这个为例,写一行不对齐的: 请添加图片描述

    写入封号后立刻对齐: 请添加图片描述

    也可以 ctrl+s全文对齐。 请添加图片描述

    按ctrl+s:请添加图片描述

    格式化原理:

    • clang-format基于Clang编译器的AST分析,能够理解C++语法结构
    • 配置文件采用YAML格式,可以精确控制代码风格
    • VS Code通过Language Server Protocol与clang-format通信

    🧠 六、IntelliSense智能提示配置

    6.1 创建c_cpp_properties.json

    在.vscode/c_cpp_properties.json中配置:

    {
    "configurations": [
    {
    "name": "Linux",
    "includePath": [
    "${workspaceFolder}/include/**",
    "${workspaceFolder}/src/**",
    "/usr/include/**",
    "/usr/local/include/**",
    "/usr/include/c++/**",
    "/usr/include/x86_64-linux-gnu/c++/**"
    ],
    "defines": [
    "_DEBUG",
    "UNICODE",
    "_UNICODE"
    ],
    "compilerPath": "/usr/bin/g++",
    "cStandard": "c17",
    "cppStandard": "c++17",
    "intelliSenseMode": "linux-gcc-x64",
    "compilerArgs": [
    "-Wall",
    "-Wextra",
    "-Wpedantic"
    ],
    "browse": {
    "path": [
    "${workspaceFolder}/include",
    "${workspaceFolder}/src",
    "/usr/include",
    "/usr/local/include"
    ],
    "limitSymbolsToIncludedHeaders": true,
    "databaseFilename": "${workspaceFolder}/.vscode/browse.vc.db"
    }
    }
    ],
    "version": 4
    }

    配置说明:

    • includePath: IntelliSense搜索头文件的路径 主要是自己写的头文件,如果不配置好可能找不到
    • compilerPath: 指定编译器路径,用于获取系统头文件信息
    • intelliSenseMode: 告诉IntelliSense使用哪种编译器模式解析代码
    • browse: 配置符号数据库,提供更好的代码导航体验

    6.2 验证配置

    配置完成后,你应该能够:

    • 鼠标悬停查看函数/变量信息
    • Ctrl+点击跳转到定义
    • F12查看定义,Shift+F12查看所有引用
    • 自动补全函数名和变量名
    • 实时语法错误提示

    🔧 七、常见问题解决

    8.1 CMake版本问题

    问题:cmake_minimum_required版本过高

    # 查看当前CMake版本
    cmake –version

    # 如果版本过低,从官方源安装最新版
    wget -O – https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg –dearmor| sudo tee /etc/apt/trusted.gpg.d/kitware.gpg >/dev/null
    sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/ focal main'
    sudo apt update && sudo apt install cmake

    8.2 头文件找不到

    问题:编译时提示找不到自定义头文件

    • 检查CMakeLists.txt中的include_directories()配置
    • 确认头文件路径正确
    • 验证c_cpp_properties.json中的includePath设置

    📚 八、总结与进阶

    9.1 完整工作流程

  • 项目初始化: 创建标准目录结构
  • 编写代码: 遵循头文件/源文件分离原则
  • 配置构建: 编写CMakeLists.txt
  • 设置编辑器: 配置VS Code各项功能
  • 编译调试: 使用一键编译和GDB调试
  • 代码格式化: 保持代码风格一致性
  • 9.2 参考资源

    • CMake官方文档
    • VS Code C++开发指南
    • clang-format配置选项
    • 现代CMake教程

    本文配置适用于大部分C++项目开发需求,建议根据具体项目特点进行调整。如果在配置过程中遇到问题,欢迎在评论区讨论交流!


    赞(0)
    未经允许不得转载:171主机测评 » Ubuntu 20.04 上零基础搭建 VS Code + C++ 开发环境(VS Code + CMake)
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址