一、简介
安装VSCode或者Trae后,他们的插件文件夹以及用户设置文件夹的路径默认是在C盘的,注意这里是用户安装版本的vscode版本。Download Visual Studio Code - Mac, Linux, Windows
以及这里的trae是国际版本(trae.ai),下载地址是TRAE - Collaborate with Intelligence,因为国际版可使用国外AI模型。
二、VSCode
windows上需要是第一次安装VSCode才能更改好VSCode本体程序的位置改到D盘
2.1 原始路径
cpp
extensions: C:\Users\用户名\.vscode\extensions
user-data: C:\Users\用户名\AppData\Roaming\Code
如果没有更改VSCode本体位置: C:\Users\用户名\AppData\Local\Programs\Microsoft VS Code
2.2 选择使用创建软连接的方式,使用mklink方式修改,而修改快捷方式的目标会带来某些问题(必须从快捷方式启动,不推荐)
%username%会自动解析为系统当前用户名
bash
mklink /D "C:\Users\%username%\.vscode" "D:\VS_Code\.vscode"
或者
mklink /D "C:\Users\%username%\.vscode\extensions" "D:\VS_Code\extensions"
mklink /D "C:\Users\%username%\AppData\Roaming\Code" "D:\VS_Code\AppData\Roaming\Code"
mklink /D "C:\Users\%username%\AppData\Local\Programs\Microsoft VS Code" "D:\VS_Code\VSCode\Microsoft VS Code"
2.3 先剪切文件夹到自己制定的位置,再以管理员使用cmd窗口,执行上三条语句,如果更改过VSCode程序本体位置就不用执行第三条




2.4 成功后可查看软连接符号,如果打开VSCode没有检测到插件就需要重启VSCode几次或者重启电脑一次


2.5 删除符号链接,不建议使用**rmdir /s 命令** (/s 会强制删除源文件)
2.5.1 方法 1:图形化操作(最安全,推荐新手)
- 打开文件资源管理器,分别找到这三个路径:
C:\Users\你的用户名\.vscodeC:\Users\你的用户名\AppData\Local\Programs\Microsoft VS CodeC:\Users\你的用户名\AppData\Roaming\Code
- 直接右键符号链接 → 删除(或按 Delete 键)
- 系统只会删除软链接本身 ,D 盘的真实文件完全不受影响
2.5.2 以管理员使用cmd窗口执行
删除 .vscode 软链接
rmdir "C:\Users\%username%\.vscode"
删除 VS Code 程序目录软链接
rmdir "C:\Users\%username%\AppData\Local\Programs\Microsoft VS Code"
删除 Code 配置目录软链接
rmdir "C:\Users\%username%\AppData\Roaming\Code"
2.6 验证成功

三、Trae
与VSCode差不多
3.1 原始路径
cpp
插件:C:\Users\%username%\.trae\extensions
配置缓存:C:\Users\%username%\AppData\Roaming\Trae
主程序:C:\Users\%username%\AppData\Local\Programs\Trae
3.2 剪切文件夹到指定路径,再以管理员身份运行CMD执行

cpp
mklink /D "C:\Users\%username%\.trae" "D:\SoftwaresHub\Trae_IDE\.trae"
mklink /D "C:\Users\%username%\AppData\Roaming\Trae" "D:\SoftwaresHub\Trae_IDE\AppData\Roaming\Trae"

3.3 验证成功




不能安装MS的C/C++插件

四、对于微软的C/C++插件,非微软承认的编辑器不能下载其插件,所以有必要说一下Trae如何配置clangd,配置好后就可以使用跳转函数、代码提示、代码补全等功能
4.1 简介
下载:


clangd简单来说就是一个语言服务器程序,在这个服务器上安装配置编译器工具链(含 clang 解析器)这种编译器和解析器,即可解析项目代码工程
4.2 安装LLVM





环境变量会添加D:\LLVM\bin

4.3 在Trae安装插件
4.3.1 clangd插件里配置LLVM的clangd路径

不要自动安装,因为我们下载了LLVM整个工具链,LLVM里面已经带了clangd语言服务器程序


点击扩展设置

输入
@ext:llvm-vs-code-extensions.vscode-clangd path

4.3.2 配置LLVM的clangd的一些功能
Windows :路径:%LocalAppData%\clangd\config.yaml(可在文件资源管理器中直接输入 %LocalAppData%\clangd,新建 config.yaml)

cpp
# This file was generated by Qt Creator and will be overwritten unless you remove this line.
Hover:
ShowAKA: Yes
Diagnostics:
UnusedIncludes: Strict
# 参考:https://clangd.llvm.org/config
# 补全配置:参数列表显示分隔符
Completion:
ArgumentLists: Delimiters
# 嵌入式提示:显示代码块结束、默认参数等
InlayHints:
BlockEnd: true # 显示代码块结束标记(如 `}` 旁标注函数名)
DefaultArguments: true # 显示函数默认参数提示
TypeNameLimit: 0 # 类型名提示无长度限制
# 全局编译选项(所有项目生效)
CompileFlags:
Add: [-Wall] # 添加 `-Wall` 开启所有警告
4.3.3 按需添加clangd的功能

cpp
{
"clangd.arguments": [
// 后台索引(提升大型项目的响应速度)
"--background-index",
"--background-index-priority=low", // 后台索引优先级设为低,不影响编辑
// 启用代码检查(基于clang-tidy,支持代码规范检查)
"--clang-tidy",
// 补全样式:detailed显示更详细的补全信息(如参数类型)
"--completion-style=detailed",
// 代码风格 fallback:当项目无明确风格时,默认使用Google风格
"--fallback-style=Google",
// 关闭函数参数占位符(避免补全时自动插入`${1}`等占位符)
"--function-arg-placeholders=false",
// 禁止自动插入#include(如需手动控制头文件引入)
"--header-insertion=never",
// 重命名文件时无数量限制(默认可能限制大项目重命名)
"--rename-file-limit=0",
// 启用Clangd的配置文件(即前面提到的user/project级config.yaml)
"--enable-config",
// 并行任务数量(根据CPU核心数调整,如8核设为8,加速索引)
"-j=12",
// PCH(预编译头)存储在内存中,提升解析速度
"--pch-storage=memory",
// 格式化输出日志(方便调试)
"--pretty",
// 【核心】指定compile_commands.json的路径(必须修改!)
// 该文件由CMake、Make等构建工具生成,包含项目编译信息(如头文件路径、宏定义)
// 解释:基于cmake构建管理项目时,使用该命令(--compile-commands-dir=)产生的compile_commands.json会放到指定文件夹下同时该文件帮助你找到头文件信息索引
// 格式:--compile-commands-dir=项目中compile_commands.json所在的文件夹路径
"--compile-commands-dir=${workspaceFolder}/build", // 示例:项目根目录下的build文件夹
// 【核心】指定编译器路径(解决标准库头文件找不到的问题)
// 通配符匹配编译器路径(如ARM交叉编译器、x86编译器)
// 格式:--query-driver=编译器可执行文件的路径(支持*通配符)
// "--query-driver=${userHome}/tools/gcc-arm-none-eabi-10.3-2021.10/bin/arm-none-eabi-g*" // 示例:ARM编译器路径
"--query-driver=D:/mingw64/bin"
]
}
4.4 安装辅助插件CMake插件,因为必须使用cmake构建出clangd信息才能解析工程
4.4.1 安装cmake工具链本体



添加环境变量


4.4.2 安装cmake插件

4.4.3 配置工具链路径


4.5 加法小程序工程测试(使用mingw编译+clangd插件解析工程)
选择mingw里的g++编译和clangd解析
4.5.1 创建根目录的main.c、子文件夹add、顶层cmake
根目录下的main.c
cpp
#include <iostream>
#include "add.h"
#include <cstdlib>
int main() {
system("chcp 65001 > nul");
// 先单独计算add结果,方便排查函数是否异常
int add_result = add(1, 1);
// 输出后立即刷新缓冲区,解决PowerShell无输出问题
std::cout << "add函数计算结果:" << add_result << std::endl << std::flush;
system("pause");
return 0;
}
根目录下的CMakeLists.txt
cpp
# 主目录 CMakeLists.txt
cmake_minimum_required(VERSION 3.18)
# 强制 Clang 使用 UTF-8 编码
add_compile_options(-finput-charset=UTF-8 -fexec-charset=UTF-8)
# 强制 Windows 控制台使用 UTF-8
add_compile_definitions(_UNICODE UNICODE)
set(CMAKE_CXX_FLAGS "-static")
set(CMAKE_EXE_LINKER_FLAGS "-static")
# 强制使用 作为 C++ 编译器
set(CMAKE_CXX_COMPILER "g++")
set(CMAKE_C_COMPILER "gcc")
# 强制 Debug 模式
set(CMAKE_BUILD_TYPE Debug)
# 强制 Debug 模式,生成调试符号(clang 同样需要 -g 选项)
set(CMAKE_BUILD_TYPE Debug)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -O0")
project(E9_clang_test) # 项目名可保持不变
# 开启编译数据库生成(关键!clangd依赖这个文件 一定一定一定要注意)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# 关键:添加子目录(编译add模块)
# 确保子目录也继承这些 Debug 模式配置
add_subdirectory(add)
# 定义可执行程序目标(目标名:E9_clang_test)
add_executable(E9_clang_test main.cpp)
# 链接add库(目标名必须和上面的add_executable一致)
target_link_libraries(E9_clang_test add)
根目录下的.clangd
cpp
CompileFlags:
# 强制 clangd 匹配 MinGW 编译环境,找到标准库头文件
Add:
- --target=x86_64-w64-mingw32
- --sysroot=D:/SoftwaresHub/mingw64
- -std=c++17
- -ID:/SoftwaresHub/mingw64/x86_64-w64-mingw32/include/c++
- -ID:/SoftwaresHub/mingw64/x86_64-w64-mingw32/include
- -I${CMAKE_SOURCE_DIR}/add
# 移除不必要的警告,避免干扰
Remove: [-W*]
Index:
# 自动索引 C++ 标准库,解决 iostream 找不到的问题
StandardLibrary: Yes
Background: Build
子文件夹add的add.h
cpp
#ifndef __ADD_H__
#define __ADD_H__
int add(int a, int b);
#endif // !__ADD_H__
子文件夹add的add.cpp
cpp
#include "add.h"
int add(int a, int b)
{
return a+b;
}
子文件夹add的CMakeLists.txt
cpp
# 强制开启 Debug 模式,生成调试符号
set(CMAKE_BUILD_TYPE Debug)
# 针对 C++ 代码,强制添加调试选项(-g 生成调试符号,-O0 关闭优化)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0")
add_library(add STATIC add.cpp)
target_include_directories(add PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
注:添加调试符号产生是为了可以后续启动调试
4.5.2 在cmake插件工具哪里可以指定编译工具链包


选择mingw的GCC里的工具链

4.5.3 成功结果
如果powershell里打印信息是乱码的,是因为控制台是GBK,代码文件时UTF-8,建议控制台编码声明为UTF-8



4.6 出现了跳转和出现一些代码提示(if语句结尾处提示,参数前有变量名:)则可以成功使用clangd解析工程正常跳转



五、问题记录
5.1 成功编译程序后,执行可执行程序后,powershell和CMD窗口没有打印信息
原始cmake文件
根cmake
cpp
# 主目录 CMakeLists.txt
# 强制使用 ++ 作为 C++ 编译器
set(CMAKE_CXX_COMPILER "g++")
set(CMAKE_C_COMPILER "gcc")
# 强制 Debug 模式
set(CMAKE_BUILD_TYPE Debug)
# 强制 Debug 模式,生成调试符号(clang 同样需要 -g 选项)
set(CMAKE_BUILD_TYPE Debug)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -O0")
cmake_minimum_required(VERSION 3.18)
project(E9_clang_test) # 项目名可保持不变
# 开启编译数据库生成(关键!clangd依赖这个文件)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# 关键:添加子目录(编译add模块)
# 确保子目录也继承这些 Debug 模式配置
add_subdirectory(add)
# 定义可执行程序目标(目标名:E9_clang_test)
add_executable(E9_clang_test main.cpp)
# 链接add库(目标名必须和上面的add_executable一致)
target_link_libraries(E9_clang_test add)
子文件夹cmake文件
cpp
# 强制开启 Debug 模式,生成调试符号
set(CMAKE_BUILD_TYPE Debug)
# 针对 C++ 代码,强制添加调试选项(-g 生成调试符号,-O0 关闭优化)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0")
cmake_minimum_required(VERSION 3.10)
add_library(add STATIC add.cpp)
target_include_directories(add PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
5.1.1 发现问题
前提情况:
同时,我想要尝试clang++和clangd这个方案,但是这个需要Visual Studio/MSVC和Windows_SDK,以及缺少构建工具,但是我的系统是新装的,所以没有。
则切换方案:mingw编译代码和clangd解析代码,然后遇见了这个无打印信息的现象
使用语句dump出错误号,由AI分析出是缺少了一些系统库DLL文件,但是可以使用mingw里自带的库
powershell使用
$LASTEXITCODE

CMD窗口使用
echo %errorlevel%

5.1.2 解决问题


在顶层cmake文件添加下面两句,这个-static连接的是mingw里的系统库文件
cpp
set(CMAKE_CXX_FLAGS "-static")
set(CMAKE_EXE_LINKER_FLAGS "-static")
cpp
# 主目录 CMakeLists.txt
cmake_minimum_required(VERSION 3.18)
# 强制 Clang 使用 UTF-8 编码
add_compile_options(-finput-charset=UTF-8 -fexec-charset=UTF-8)
# 强制 Windows 控制台使用 UTF-8
add_compile_definitions(_UNICODE UNICODE)
set(CMAKE_CXX_FLAGS "-static")
set(CMAKE_EXE_LINKER_FLAGS "-static")
# 强制使用 作为 C++ 编译器
set(CMAKE_CXX_COMPILER "g++")
set(CMAKE_C_COMPILER "gcc")
# 强制 Debug 模式
set(CMAKE_BUILD_TYPE Debug)
# 强制 Debug 模式,生成调试符号(clang 同样需要 -g 选项)
set(CMAKE_BUILD_TYPE Debug)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -g -O0")
project(E9_clang_test) # 项目名可保持不变
# 开启编译数据库生成(关键!clangd依赖这个文件)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# 关键:添加子目录(编译add模块)
# 确保子目录也继承这些 Debug 模式配置
add_subdirectory(add)
# 定义可执行程序目标(目标名:E9_clang_test)
add_executable(E9_clang_test main.cpp)
# 链接add库(目标名必须和上面的add_executable一致)
target_link_libraries(E9_clang_test add)
参考链接(如有侵权,请联系删除):
VSCode(Visual Studio Code)扩展及缓存占用C盘空间问题的解决 - 灰信网(软件开发博客聚合)
【VSCode】【Clangd】Win下的基于LLVM/Clangd+Clangd插件+MINGW+CMake的VSCode配置C/C++开发环境的详细教程-CSDN博客
