前言(写作目的)
这篇文章旨在让 Unreal Engine C++ 项目在 Cursor 中拥有现代 IDE 级的智能体验(精准补全、转到定义、诊断),通过实战配置 clangd 与 compile_commands.json,复现接近 Rider/VS 的开发手感。
1)安装 clangd(不需要装 VS 的 Clang 工具链)
winget install -e LLVM.LLVM
验证
"C:\Program Files\LLVM\bin\clangd.exe" --version
2)生成 compile_commands.json(用 UE 自带脚本),把 UE 路径和你的项目路径替换为实际版本/位置:
例:UE 安装在 D:\Program Files\Unreal\UE_5.4
"D:\Program Files\Unreal\UE_5.4\Engine\Binaries\DotNET\UnrealBuildTool\UnrealBuildTool.exe" ^
-Mode=GenerateClangDatabase ^
-Project="D:\MyProjects\Aura\Aura.uproject" ^
-Target="AuraEditor Win64 Development" ^
-Target="Aura Win64 Development"
3)生成成功后,让 Cursor/clangd 读到compile_commands.json即可
方案A(最简单):把它放到项目根
copy /Y "D:\Program Files\Unreal\UE_5.4\compile_commands.json" "D:\MyProjects\Aura\compile_commands.json"
方案B(不复制,直接指向 Engine 目录)
在工作区设置里加入:
{
"clangd.path": "C:\\Program Files\\LLVM\\bin\\clangd.exe",
"clangd.arguments": [
"--compile-commands-dir=D:\\Program Files\\Unreal\\UE_5.4"
]
}
可选:做一个软链接,后续生成会自动生效(需管理员 CMD)
mklink "D:\MyProjects\Aura\compile_commands.json" "D:\Program Files\Unreal\UE_5.4\compile_commands.json"
验证:在 Cursor 中打开项目,等 clangd 准备好后尝试对 GetHitReactMontage 跳转/补全即可。后续改动模块时,重复生成命令再刷新即可。
最后确认
- 确认有 clangd 可执行文件 终端运行:clangd --version(没装的话:winget install -e
LLVM.LLVM) - 确认 Cursor 里启用了 clangd 扩展
安装 “clangd” 扩展;如也装了微软的 C/C++扩展,建议把其 IntelliSense 关掉以免冲突:
{
"C_Cpp.intelliSenseEngine": "Disabled"
}
如果没有setting.json,新建一个 .vscode 目录再建 settings.json。
UHT 生成头文件
"D:\Program Files\Unreal\UE_5.4\Engine\Build\BatchFiles\Build.bat" AuraEditor Win64 Development -Project="D:\MyProjects\Aura\Aura.uproject" -WaitMutex -NoHotReload
给 clangd 加 MSVC 兼容参数
{
"C_Cpp.intelliSenseEngine": "Disabled",
"clangd.path": "C:\\Program Files\\LLVM\\bin\\clangd.exe",
"clangd.arguments": [
"--query-driver=C:\\Program Files\\Microsoft Visual Studio\\**\\cl.exe",
"--background-index",
"--header-insertion=never",
"--log=error"
]
}
最后,每当新增了.h文件,cpp文件,这样做
通常需要两步:先跑一次构建触发 UHT,再刷新 compile_commands.json 给 clangd 用。
什么时候需要做什么
- 只新建了“普通”C++工具类(不含 UCLASS/UPROPERTY/UFUNCTION):
- 必做:重新生成 compile_commands.json(让 clangd 知道新 .cpp 的编译参数)
- 可选:不用特意跑 UHT(完整构建时自然会跑)
- 新建了 UObject/Actor 等“带反射”的类(用到 UCLASS/UPROPERTY/UFUNCTION):
- 必做:跑一次构建(触发 UHT 生成 *.generated.h)
- 然后:重新生成 compile_commands.json
- 仅编辑已有文件(没新增 .cpp/.h、没改模块依赖/编译选项):
- 一般都不需要两者
可直接用的命令
- 触发 UHT(任选其一目标)
"D:\Program Files\Unreal\UE_5.4\Engine\Build\BatchFiles\Build.bat" AuraEditor Win64 Development -Project="D:\MyProjects\Aura\Aura.uproject" -WaitMutex -NoHotReload
- 刷新 compile_commands.json
"D:\Program Files\Unreal\UE_5.4\Engine\Binaries\DotNET\UnrealBuildTool\UnrealBuildTool.exe" -Mode=GenerateClangDatabase -Project="D:\MyProjects\Aura\Aura.uproject" -Target="AuraEditor Win64 Development" -Target="Aura Win64 Development"
copy /Y "D:\Program Files\Unreal\UE_5.4\compile_commands.json" "D:\MyProjects\Aura\compile_commands.json"
- 省事做法(只做一次):把项目根的 compile_commands.json 做成指向 UE 生成文件的软链,这样每次你只需再执行“刷新 compile_commands.json”即可,无需重复 copy。
del "D:\MyProjects\Aura\compile_commands.json" 2>nul
mklink "D:\MyProjects\Aura\compile_commands.json" "D:\Program Files\Unreal\UE_5.4\compile_commands.json"
最后别忘了重启 clangd(或“Clangd: Rebuild index”)。
3439

被折叠的 条评论
为什么被折叠?



