lsp-bridge 无法自动检测到 cmake 项目里面的头文件

problem

rt, 最近我在使用 Emacs 写 cpp 的项目的时候发现一个问题,

必须在 .cpp 文件里面显式指定头文件地址,如#include "../include/hw1.h",lsp-bridge 才能成功检测到该文件,

而不能自动检测项目根目录下的 include 文件夹,#include "hw1.h" 这样会报错,找不到该头文件。

我尝试了在 lsp-bridge 里面以 cmake 为关键词搜索,但是我除了 cmake 的 lsp 没有找到其他有效信息。我不确定是否我看漏了,因此先在这里求助大佬。

more information

AP1400-2-HW/AP1400-2-HW1 on  main via △ v3.31.6 
❯ tree
.
├── build/...
├── CMakeLists.txt
├── Dockerfile
├── include
│   └── hw1.h
├── README.md
├── resources
│   ├── concatenate.png
│   ├── minor.png
│   ├── upper_triangular1.png
│   └── upper_triangular2.png
└── src
    ├── hw1.cpp
    ├── main.cpp
    └── unit_test.cpp

14 directories, 48 files
  • emacs: GNU Emacs 30.1 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.49, cairo version 1.18.4) of 2025-08-10, modified by Debian
  • lsp-bridge: Merge pull request #1244 from falood/use-copilot-via-binary
1 个赞

你需要 compiles-command.json 通常编译器都能帮你自动生成一个的,

1 个赞

这是clangd的问题,你用eglot或者nvim的lsp都是一样的,如楼上所说.

我查了查cmake有相关文档cmake

1 个赞

如楼上所说确实需要 compiles-command.json 文件

cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .. 

这样会自动生成文件

1 个赞