环境
WSL需要安装cmake

编译器g+±14 应该是包含了所有std:c++23把好像包含部分c++26

vscode 需要插件cmake
vscode clangd 方便提示吧

File Watch 插件目的在保存.h/.cpp文件时候自动执行vscode 的cmake吧

error lens 方便每次显示错误和警告的提示懒得每次点击去看错误


Edit Suggest Preview:打开

Git Graph 的插件还是挺好用的


目录

.clangd
json
CompileFlags:
Add:
- -std=c++26
- -ferror-limit=0
CompilationDatabase:
"compile_commands.json"
Diagnostics:
Suppress:
# 抑制"缺少大括号"的警告,主要针对列表初始化写法
- missing-braces
# 忽略未使用的函数的警告(例如调试工具函数)
- unused-function
# 忽略结构体未完全初始化的警告(部分字段默认初始化)
- missing-field-initializers
# 忽略结构体内存对齐相关的 pack 警告
- pragma-pack
.clang-format
json
BasedOnStyle: Google # 或者其他基础风格,比如 LLVM、Mozilla 等
IndentWidth: 4 # 缩进宽度
TabWidth: 4 # Tab 显示宽度
UseTab: Never # 使用空格代替 Tab
ColumnLimit: 100 # 设置最长换行长度为 120 个字符
BreakBeforeBraces: Attach # 大括号样式
SortIncludes: false
AccessModifierOffset: -4 # 类访问修饰符(public/private)缩进的偏移
settings.json
json
{
"editor.wordWrap": "on",
"C_Cpp.intelliSenseEngine": "disabled",
"clangd.path": "/usr/bin/clangd",
"clangd.arguments": [
"--enable-config",
"-log=verbose",
"-pretty",
"--background-index",
"--compile-commands-dir=/home/xiaqiu/test/build",
"--header-insertion=never",
"--function-arg-placeholders=true"
],
"editor.tokenColorCustomizations": {
"textMateRules": [
{
"scope": [
//following will be in italic
"function",
"entity.name.type.class", //class names
"constant", //String, Number, Boolean..., this, super
"keyword",
"storage"
],
"settings": {
"fontStyle": "bold",
// "foreground": "#240ab4"
}
},
{
"scope": "comment",
"settings": {
"fontStyle": "bold",
"foreground": "#c8c8c8"
}
},
{
"scope": [
"entity.name.type.class"
],
"settings": {
"foreground": "#03A1FE",
"fontStyle": "bold"
},
},
{
"scope": "entity.name.function", // 定义函数调用的范围
"settings": {
// "foreground": "#d58728f7",
"fontStyle": "bold",
}
}
],
},
"editor.formatOnSave": true,
"editor.fontFamily": "Fira Code",
"editor.guides.bracketPairs": true,
"cmake.debugConfig": {
"console": "internalConsole"
},
"filewatcher.commands": [ //需安装file watcher 插件
{
//保存自动编译当前的文件
"match": "\\.(cpp|h)$",
"vscodeTask": [
"cmake.build"
], //cmake 插件的命令
"runInBackground": true,
"event": "onFileChange"
}
]
}
上层CMakeLists.txt
cpp
cmake_minimum_required(VERSION 3.8)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
project("study")
add_subdirectory("src")
下层CMakeLists.txt
cpp
# 设置 CMake 的最低版本要求
cmake_minimum_required(VERSION 3.10)
# 设置项目的名称和使用的编程语言
project(MyCppProject CXX)
# 设置 C++ 标准为 C++26
set(CMAKE_CXX_STANDARD 26)
# 使用 file(GLOB ...) 获取当前目录下所有 .cpp 文件
file(GLOB SOURCES "*.cpp")
# 排序 SOURCES 列表(字典顺序)
list(SORT SOURCES)
# 获取字典顺序最大的文件
list(LENGTH SOURCES LIST_SIZE)
if(LIST_SIZE GREATER 0)
set(MAX_NUMBER -1) # 初始化最大数字为负值
set(MAX_FILE "") # 初始化最大文件为空字符串
# 遍历 SOURCES 列表中的所有文件
foreach(FILE ${SOURCES})
# 从路径中提取文件名部分
get_filename_component(FILENAME ${FILE} NAME)
# 获取文件名中的数字部分
string(REGEX MATCH "[0-9]+" FILE_NUMBER "${FILENAME}")
# 如果提取到的数字大于当前最大数字,更新最大数字和对应的文件
if(FILE_NUMBER GREATER ${MAX_NUMBER})
set(MAX_NUMBER ${FILE_NUMBER})
set(MAX_FILE ${FILE})
endif()
endforeach()
# 输出最大的文件和数字
message(STATUS "最大数字对应的文件是: ${MAX_FILE}")
message(STATUS "提取的最大数字是: ${MAX_NUMBER}")
# 编译提取数字最大值对应的文件
if(MAX_FILE)
message(STATUS "正在编译文件: ${MAX_FILE}")
# 这里可以添加编译命令,例如:
# add_executable(${MAX_FILE} ${MAX_FILE})
else()
message(WARNING "没有找到包含数字的文件")
endif()
else()
message(WARNING "没有 .cpp 文件被发现")
endif()
# 创建可执行文件
add_executable(test ${MAX_FILE})
debug 发现没有gdb 安装gdb


查看二进制需要hex edit插件


值得注意的地方

相关选项推荐
clangd
有很多有用的启动参数,可以极大提升你的 C/C++ 开发体验,特别是在 VS Code 或其他支持 LSP 的编辑器中。
以下是一些 常用且推荐的 clangd 参数,并附上说明和用途:
🔧 常用 & 推荐 clangd
启动参数
参数 | 说明 | 推荐值 |
---|---|---|
--completion-style= |
控制补全显示的详细程度 | detailed ✅ |
--function-arg-placeholders |
补全函数时是否插入参数占位符 | true ✅(默认) |
--header-insertion= |
控制自动插入头文件 | iwyu / never |
--header-insertion-decorators |
是否显示头文件建议来源(如 #include <vector> ) |
true (默认) |
--background-index |
在后台为整个项目建立索引,加速跳转 | true ✅ |
--pch-storage= |
控制 PCH(预编译头文件)缓存存储方式 | memory (快) |
--clang-tidy |
启用 clang-tidy 静态检查 |
true ✅ |
--suggest-missing-includes |
当找不到符号时,建议包含头文件 | true ✅ |
--ranking-model |
自动补全排序方式 | decision_forest (更智能) |
--log= |
设置日志输出 | verbose (调试用) |
📌 参数详细说明:
1. --completion-style=detailed
显示补全项的完整类型签名、返回值,帮助你更快理解函数。
2. --clang-tidy
运行 clang-tidy 检查,给你静态代码质量建议(如风格、性能、bug 潜在点)。
✨ 可以配合
.clang-tidy
文件进行自定义检查。
3. --background-index
为整个项目自动生成索引,而不是仅索引打开的文件。大大提升跳转(Go to definition)、查找引用速度。
4. --pch-storage=memory
使用内存缓存 PCH,加快补全速度(尤其是大型项目)。缺点是占用更多内存。
5. --header-insertion=iwyu
"Include What You Use" 模式,clangd 会在你用到符号时,自动推荐需要 #include
的头文件。
6. --suggest-missing-includes
如果你用到了某个类型但没包含对应头文件,clangd 会提示你并建议修复。
7. --ranking-model=decision_forest
启用更智能的补全排序模型(使用机器学习技术),比默认排序更符合实际需求。
⚙️ 示例:VS Code 中启用这些参数
编辑你的 settings.json
:
json
"clangd.arguments": [
"--background-index",
"--clang-tidy",
"--completion-style=detailed",
"--function-arg-placeholders=true",
"--pch-storage=memory",
"--header-insertion=iwyu",
"--suggest-missing-includes",
"--ranking-model=decision_forest"
]
🎯 总结:推荐开启的选项组合
✅ --background-index
✅ --clang-tidy
✅ --completion-style=detailed
✅ --function-arg-placeholders=true
✅ --header-insertion=iwyu
✅ --suggest-missing-includes
✅ --ranking-model=decision_forest
这些选项一起使用,可以显著增强代码补全、诊断、导航的体验。
另外一个悬浮翻译的插件也不错


英语发音的插件


vscode 的smooth 选项
