VSCode的C++插件clangd如何搭配cuda使用?

由于微软官方的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 文件模式

相关推荐
mengzhi啊3 小时前
QEventLoop loop配合loop.exec();替代while(1)。电脑cpu占用为0,使用while(1)cpu占用率100%
c++·qt
HugoStudio_SWAN3 小时前
洛谷 P1319 / P1320 压缩技术——同一枚硬币的正反面
c++·学习·程序人生·算法
小小晓.4 小时前
C++单例模式万字详解:6种实现演进+线程安全彻底解决+CRTP终极模板
c++·单例模式
j7~5 小时前
【C++11】C++11 新特性全套详解(列表初始化、右值引用、lambda 表达式、function 与 bind 包装器等)
c++·右值引用·lambda表达式·可变参数模板·移动语义·包装器·c++11发展史
无小道5 小时前
C/C++——可变参数
c语言·开发语言·c++·可变参数
hele_two6 小时前
C++模拟蚁群(二)
c++·算法·数学建模·图形渲染
WK100%6 小时前
LeetCode双题:滑动窗口破解最小子数组
c++·经验分享·笔记·算法
@福者6 小时前
C++ QT 入门
开发语言·c++·qt
沧海一笑-dj6 小时前
【C++】Visual Studio 2026下载和安装
c++·visual studio·vs·vs2026
HugoStudio_SWAN6 小时前
洛谷 P1321 单词覆盖还原——从蜡板上的密信到数字水印
c++·学习·程序人生·算法