VSCode的clangd插件简单介绍和使用

1、介绍

帮助开发者编写、理解和 通过提供以下条件来改进C/C++代码:

  • 代码补全
  • 编译错误与警告
  • 首选定义与交叉引用
  • 悬停信息与内嵌提示
  • 包括管理层
  • 代码格式化
  • 简单重构

clangd详细的介绍和可参考:VS Code 插件 clangd的用法 - newtonltr - 博客园

注意:

你必须告诉clangd你的项目是如何构建的(编译标志)。你的构建系统通常可以生成一个compile_commands.json文件(例如,通过设置 ,使用 CMake)DCMAKE_EXPORT_COMPILE_COMMANDS=1

复制代码
[
  { "directory": "/home/user/llvm/build",
    "arguments": ["/usr/bin/clang++", "-Irelative", "-DSOMEDEF=With spaces, quotes and \\-es.", "-c", "-o", "file.o", "file.cc"],
    "file": "file.cc" },

  { "directory": "/home/user/llvm/build",
    "command": "/usr/bin/clang++ -Irelative -DSOMEDEF=\"With spaces, quotes and \\-es.\" -c -o file.o file.cc",
    "file": "file2.cc" },

  ...
]

可参考官网:clangd - Visual Studio Marketplace

2、安装

(1)clangd插件安装

(2)clangd的服务器安装

linux下的安装命令sudo apt-get install clangd

其它平台安装可参考:VS Code 插件 clangd的用法 - newtonltr - 博客园

3、VSCode使用

demo的tree路径如下:

复制代码
.
├── CMakeLists.txt
├── include
│   └── DataProcessor.h
├── main.cpp
└── src
    └── DataProcessor.cpp

(1)CMakeLists.txt

复制代码
cmake_minimum_required(VERSION 3.16.3)

project(test)

set(CMAKE_EXPORT_COMPILE_COMMANDS ON) #生成compile_commands.json

include_directories(include)
add_executable(${PROJECT_NAME} main.cpp ./src/DataProcessor.cpp)

(2)code

复制代码
#include <iostream>
#include <assert.h>
#include <thread>
#include "DataProcessor.h"
int cnt = 0;
void func(){
    if(cnt < 3){
        printf("func i =%d\n",cnt);
        cnt++;
        func();
    }
}

int main(){
    DataProcessor p;
    p.process("hello");
    p.process("world");

    std::cout << "Result = " << p.result() << std::endl;
    #if 0
    printf("hello world\n");
    func();
        while(cnt < 30*10000){
        cnt++;
        std::this_thread::sleep_for(std::chrono::seconds(1));
    }
    #endif
    return 0;
}

DataProcessor.cpp

复制代码
#include "DataProcessor.h"
#include <iostream>

// Impl 的完整定义只在 cpp 中
class DataProcessor::Impl {
public:
    void process(const std::string& data) {
        std::cout << "Processing data: " << data << std::endl;
        result_ += static_cast<int>(data.size());
    }

    int result() const {
        return result_;
    }

private:
    int result_ = 0;
};

DataProcessor::DataProcessor()
    : impl_(std::make_unique<Impl>()) {}

DataProcessor::~DataProcessor() = default;

void DataProcessor::process(const std::string& data) {
    impl_->process(data);
}

int DataProcessor::result() const {
    return impl_->result();
}

DataProcessor.h

复制代码
#pragma once
#include <memory>
#include <string>

class DataProcessor {
public:
    DataProcessor();
    ~DataProcessor();              // 必须在 cpp 中定义

    void process(const std::string& data);
    int result() const;

private:
    // Impl 是一个"只为 DataProcessor 服务"的实现类
    class Impl;

    std::unique_ptr<Impl> impl_;
};

(3) build

使用CMake生成可执行的工程文件

(4)手段指定compile_commands.json目录

打开settings.json文件,添加下面的字段clangd配置

然后依次执行下面的2个操作:

从下面可以看出clangd已经生效:

相关推荐
游戏开发爱好者85 小时前
iOS开发IDE有哪些 Xcode 和 快蝎 轻量替代方案
ide·vscode·ios·个人开发·xcode·swift·敏捷流程
张太行_6 小时前
vscode在open folder如何设置默认路径
ide·vscode·编辑器
AI的探索之旅21 小时前
AI辅助原理图评审:电源去耦、BOOT引脚、VCAP——19项逐一核查,遗漏?不存在的
人工智能·vscode·嵌入式硬件
这就是佬们吗1 天前
Python入门③-运算符、条件与循环
开发语言·数据库·vscode·python·pycharm·编辑器
2501_915921431 天前
从零开始学 Swift iOS 开发 iOS应用入门
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程
爱吃提升2 天前
VSCode 配置 Claude + Codex 完整教程
ide·vscode·编辑器
云泽8082 天前
VSCode入门指南:从认识、安装到语言插件配置全解析
ide·vscode·编辑器
爱吃提升2 天前
VSCode AI编程万能提示词模板(适配Copilot/Codeium/Continue/豆包AI)
vscode·copilot·ai编程
信鸽爱好者3 天前
VSCode配置python虚拟环境路径
ide·vscode·python
爱吃提升3 天前
2026最新VSCode 详细下载安装教程+汉化教程(含快捷键与使用趋势)
ide·vscode·编辑器