编译能成功,但 clangd 认为找不到头文件问题解决
问题产生
我的环境是 windows11 + MSYS2 + cmake + Ninja。
MSYS2 使用 GCC 15.1.0 x86_64-w64-mingw32(urct64),cmake 就直接用默认工具包生成了。
项目的目录是 include 包含所有.hpp, src 包含所有.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"即可。

浙公网安备 33010602011771号