这一小节本来算是一个补充吧, 正好之前实现Redis的部分有些bug, 修正后继续实现Redis, 这一节先简单介绍下我自己的开发环境
1 OS和编译器环境
本项目目前最高使用的C++标准是C++20, 所以需要使用g++或者clang++进行编译, 因此只要是支持C++20的编译器都可以. 我这里使用的操作系统是kali linux, 其和Ubuntu一样, 都是基于Debian, 且都使用apt作为系统包管理工具, 所以你使用Ubuntu或者Debian执行我之后的安装指令肯定也没有什么问题。
我使用
WSL2的kali linux作为开发环境,WSL2相关内容可以参考WSL入门到入土
1.1 编译器安装
1 | sudo apt install -y gcc |
这里我的编译器版本是gcc-12/g++-12
1.2 语言服务器
这里我们使用clangd作为语言服务器, clangd是一个C/C++语言服务器, 其可以提供代码补全、代码跳转、代码高亮等功能。
1 | sudo apt install -y clangd |
2 项目管理工具
2.1 Xmake
2.1.1 安装
本项目使用Xmake作为项目管理工具, Xmake是一个C/C++项目管理工具, 其可以看做Make+CMake+vcpkg的集合, 包括构建、依赖管理和项目运行等功能。
安装Xmake
1 | curl -fsSL https://xmake.io/shget.text | bash |
Xmake官网参考: https://xmake.io/#/getting_started
2.1.2 Xmake语法简介
Xmake使用Lua作为脚本语言,其语法简单易学,支持C/C++的依赖管理、构建、运行等功能。以下是一些基本的内置函数:
- 项目配置:通过
add_rules添加规则,如添加 C++11 支持。 - 目标定义:使用
target定义构建目标,包括可执行文件或库。 - 源文件指定:通过
set_sources指定源代码文件。 - 依赖管理:定义项目时使用
add_requires添加依赖, 定义目标时用add_deps声明本地依赖的目标, 使用add_packages添加第三方包依赖。 - 宏定义与包含路径:分别通过
add_defines和add_includedirs设置。
这里说起来比较抽象, 直接看一个示例:
1 | -- 定义项目 |
常用的
以上是 Xmake 的基本语法概览,更多细节可以参考官方文档: https://xmake.io/#/getting_started
2.2 vcpkg安装
vcpkg是一个跨平台依赖管理工具, 其可以自动下载、编译和安装C/C++依赖库。虽然Xmake自带一个依赖管理库, 但上面的库还是比较少, 作为补充, 我们可以再安装vcpkg, 这使得我们可以使用vcpkg来安装更多Xmake没有的依赖库。
vcpkg这里不过多介绍, 可以直接看我另一篇文章: https://zhuanlan.zhihu.com/p/849150169
3 VSCode配置
3.1 代码智能提示和跳转
这里使用clangd作为语言服务器, 我们之前已经安装了clangd, 现在只需要在VSCode中安装clangd插件即可:

3.2 集成Xmake
VScode中支持Xmake项目管理工具, 我们可以安装Xmake插件, 使得在VSCode中可以更方便的使用Xmake项目管理工具:

这里有一点需要说明, 如果你安装了Xmake插件, 但是在调试时卡死不懂, 建议禁用Code Runner和C/C++ Runner两个插件, 如果还行不将CMake插件也一起禁用了:

如果你的Xmake在调试时进入的是gdb的页面, 请在设置中将Debug Config Type设置为lldb:

当然你需要先安装CodeLLdb插件:

3.3 代码高亮
如果你经常用C++开发, 那么你可能经常会遇到第三方包导致代码高亮跳转失效的问题:

这是因为语言服务器找不到第三方包的头文件, 由于我们使用的语言服务器是clangd, 我们可以在项目根目录中添加.clangd配置文件, 让clangd知道我们的第三方包头文件的位置:
1 | CompileFlags: # 编译标志部分 |
这样一来之前的告警就不复存在了
3.4 其他实用插件
3.4.1 Better Comments && TodoTree
Better Comments是一个VSCode插件, 它可以提供代码注释高亮和语法高亮功能, 使得代码更加易读。比如像TODO, !这样的符号:

当我们实现一个功能但其后续需要更新时, 我们可以在代码中添加TODO注释, 以便后续更新时更醒目。
TodoTree则会在侧边栏展开我们标记了TODO的注释的位置

3.4.2 AI插件
如果你有钱, 直接用Cusor, Windsurf, 他们的体验更好
如果和我一样不够钱, 那么你可以使用通义灵码, Cline或者GitHub Copilot:


