这一小节本来算是一个补充吧, 正好之前实现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
: