UE5 项目在 Cursor 中实现现代 IDE 级补全与跳转:clangd + compile_commands.json


前言(写作目的)

这篇文章旨在让 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”)。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值