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 安装基础开发工具

# 更新包管理器sudoapt update # 安装编译工具链和构建系统sudoaptinstall 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编辑器

  1. 下载安装VS Code
    • 官网地址:https://code.visualstudio.com/
  2. 安装必要插件
    打开VS Code,按Ctrl+Shift+X(或者按左边那个方块图标)进入扩展市场,搜索并安装如下插件:
    • Chinese (Simplified) (简体中文):提供汉化,安装完成后会自动重启软件
    • C/C++ (Microsoft): 提供语法高亮、智能提示、调试支持,安装后应该会自动安装其他相关插件
    • CMake Tools: CMake项目管理和构建

Clang-Format: 代码自动格式化

请添加图片描述

选择.deb包下载,双击安装或使用命令:
选择.deb下载即可自动下载。

请添加图片描述

🏗️ 二、项目结构设计

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>intmain(){ std::cout <<"Hello, C++ World!"<< std::endl;return0;}

创建 include/main.h

#ifndefMAIN_H#defineMAIN_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 

编译过程如下图:

请添加图片描述

执行命令,会显示输出结果:

请添加图片描述

构建过程说明:

  1. cmake ..: 在build目录中生成Makefile,..表示CMakeLists.txt在上级目录
  2. 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}}]}

使用方法:

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

main.cpp界面,按Ctrl+Shift+B,然后下面终端会自动编译并运行

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

4.2 其他编译方案

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

在vscode安装Code Runner插件:

请添加图片描述
  • 缺点:不支持交互式输入(如std::cin),不适合复杂项目

优点:右键选择 Run Code 可运行,操作简单,不需要经过cmake

请添加图片描述

🎨 五、代码格式化配置

5.1 安装clang-format

在终端中运行:

sudoaptinstall clang-format 

5.2 创建格式化配置文件

在项目根目录创建.clang-format

请添加图片描述

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

BasedOnStyle: Google IndentWidth:4AccessModifierOffset:-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 - |sudotee /etc/apt/trusted.gpg.d/kitware.gpg >/dev/null sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/ focal main'sudoapt update &&sudoaptinstall cmake 

8.2 头文件找不到

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

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

📚 八、总结与进阶

9.1 完整工作流程

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

9.2 参考资源


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


Read more

使用 VS Code 连接 MySQL 数据库

使用 VS Code 连接 MySQL 数据库

文章目录 * 前言 * VS Code下载安装 * 如何在VS Code上连接MySQL数据库 * 1、打开扩展 * 2、安装MySQL插件 * 3、连接 * 导入和导出表结构和数据 前言 提示:这里可以添加本文要记录的大概内容: 听说VS Code不要钱,功能还和 Navicat 差不多,还能在上面打游戏 但是没安装插件是不行的 发现一个非常牛的博主 还有一个非常牛的大佬 提示:以下是本篇文章正文内容,下面案例可供参考 VS Code下载安装 VS Code下载安装 如何在VS Code上连接MySQL数据库 本篇分享是在已有VS Code这个软件的基础上,数据库举的例子是MySQL 1、打开扩展 2、安装MySQL插件 在搜索框搜索 MySQL和 MySQL Syntax,下载这三个插件 点击下面的插件,选择【install】安装

By
RustFS 保姆级上手指南:国产开源高性能对象存储

RustFS 保姆级上手指南:国产开源高性能对象存储

最近在给项目选型对象存储的时候,发现一个挺有意思的现象:一边是MinIO社区版功能逐渐“躺平”,另一边是大家对存储性能和安全性的要求越来越高。就在这时,一个叫 RustFS 的国产开源项目闯入了我的视野。 折腾了一阵子后,我感觉这玩意儿确实有点东西。它用Rust语言写,天生就带着高性能和内存安全的基因,性能号称比MinIO快一大截,而且用的是对商业友好的Apache 2.0协议。今天,我就手把手带大家从零开始,搭建一个属于自己的RustFS服务,体验一下国产存储的威力。 一、 RustFS是什么?为什么值得你关注? 简单说,RustFS是一个 分布式对象存储系统 。你可以把它理解成一个你自己搭建的、功能跟阿里云OSS、亚马逊S3几乎一样的“私有云盘”。 但它有几个非常突出的亮点,让我觉得必须试试: * 性能猛兽 :基于Rust语言开发,没有GC(垃圾回收)带来的性能抖动,官方数据显示在4K随机读场景下,性能比MinIO高出40%以上,内存占用还不到100MB,简直是“小钢炮”。 * 100%S3兼容 :这意味着你现有的所有使用S3 API的代码、工具(比如AWS

By