由于微软官方的C++插件在我的服务器上炸了,经常爆语言服务器错误,于是我只能更换插件为clangd。如果你也有这样的问题,可以从cuda+VSCode+CMake!一文搞定所有配置信息_cuda cmake-CSDN博客
继续继承下来
1.首先我们要把微软的C++插件给删掉,然后下载clangd插件

2.修改settings配置文件
https://blog.csdn.net/ouliten/article/details/151401642?spm=1001.2014.3001.5502#t12
在上述文章配置里,我们的C_Cpp配置是给微软的C++配置的,我们也要把C_Cpp有关的配置都给删掉,然后添加下列的clangd配置
"clangd.arguments": [
"--compile-commands-dir=build",
"--query-driver=/usr/bin/nvcc,/usr/bin/g++-12",
"--background-index",
"--header-insertion=never"
]
--compile-commands-dir的意思的编译命令的文件夹,一般cmake都是放在build里
--query-driver记得要加上nvcc,因为我们要编译cuda程序
3.修改cmake
由于我们的配置是根据cmake生成的:
cpp
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
这个cmake配置会生成 compile_commands.json,clangd会根据里面的内容来寻找对应头文件。而clangd会根据编译命令的-I去寻找头文件引用,如果只有上述命令,生成的 compile_commands.json里的-I是没有cuda相关头文件的,所以需要额外加上下面的命令
cpp
set(CMAKE_CUDA_USE_RESPONSE_FILE_FOR_INCLUDES OFF)
4.添加.clangd文件
clangd 现在会直接读取 compile_commands.json 里的命令,但是clangd不认识nvcc的编译命令,所以会一直报错,我们需要让clangd忽略这些内容
以下是.clangd文件的参考
cpp
CompileFlags:
Add:
- -xcuda
- --cuda-path=/usr/local/cuda
Remove:
- -forward-unknown-to-host-compiler
- -ccbin=*
- --generate-code=*
- -Xcompiler=*
- --expt-extended-lambda
- -rdc=true
Remove里面忽略了nvcc的一些配置命令,你加了什么配置,就往Remove里面加即可
Add里明确告诉clangd这是 CUDA 文件模式。