编译能成功,但 clangd 认为找不到头文件问题解决

问题产生

我的环境是 windows11 + MSYS2 + cmake + Ninja。
MSYS2 使用 GCC 15.1.0 x86_64-w64-mingw32(urct64),cmake 就直接用默认工具包生成了。
项目的目录是 include 包含所有.hppsrc 包含所有.cpp

在同样的目录下编写 .hpp 没什么大问题,但编写 .cpp 就出现了问题:

#include "../../../include/resource/map/generation.hpp"

然后 clangd就会报一万个错误。

问题追溯

能产生这个问题基本上有两种可能:cmake 编译问题,clangd 的问题。
首先尝试编译 cmake 项目,发现能够编译成功且运行,说明项目是能够找到头文件的,但 clangd 找不到。
因此,需要显示指定头文件存放的文件夹,来告诉 clangd 我的本地头文件存放在哪里。

问题解决

回到CmakeList.txt,在 add_executable() 后面填写:

# 头文件路径
target_include_directories(SDL_T PRIVATE 
  "${CMAKE_SOURCE_DIR}/include"
)

这个路径指向自己的头文件路径,之后重新 build 就可以解决这个问题了。

之后就不需要写很长的 ../ 了,回到 .cpp 文件,头文件引用改为: #include "resource/map/generation.hpp"即可。

posted @ 2025-07-17 00:03  ChickenRice  阅读(927)  评论(0)    收藏  举报