在nvim中使用clangd处理c++头文件报错

目录结构为

1
2
3
4
5
6
.
├── include
│   └── hello.h
├── main.cpp
└── src
└── hello.cpp
1
2
3
4
5
6
7
8
// main.cpp

#include "hello.h"

int main() {
SayHello();
return 0;
}
1
2
3
4
5
6
7
8
// include/hello.h

#ifndef HELLO_H
#define HELLO_H

void SayHello();

#endif
1
2
3
4
5
6
7
8
// src/hello.cpp

#include <iostream>
#include "hello.h"

void SayHello() {
std::cout << "hello world" << std::endl;
}

我们已经创建了hello.h,却还是报错。

现在我们先通过CMake来构建我们的项目

建立'CMakeLists.txt'

1
2
3
4
5
6
7
cmake_minimum_required(VERSION 3.0)

project(HELLO)

include_directories(include)

add_executable(hello main.cpp src/hello.cpp)

现在的树形结构

1
2
3
4
5
6
7
.
├── CMakeLists.txt
├── include
│   └── hello.h
├── main.cpp
└── src
└── hello.cpp

我们创建build目录来编译

1
mkdir build && cd build

常规我们是使用:

1
cmake ..

来创建,可是这样我们的头文件还是显示错误,这里我们通过clangd说的方法来添加compile_commands.json

1
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1 ..
1
make

这样我们就构建项目成功了

这样就不会报错了。