編譯能成功,但 clangd 認(rèn)為找不到頭文件問(wèn)題解決
問(wèn)題產(chǎn)生
我的環(huán)境是 windows11 + MSYS2 + cmake + Ninja。
MSYS2 使用 GCC 15.1.0 x86_64-w64-mingw32(urct64),cmake 就直接用默認(rèn)工具包生成了。
項(xiàng)目的目錄是 include 包含所有.hpp, src 包含所有.cpp
在同樣的目錄下編寫 .hpp 沒(méi)什么大問(wèn)題,但編寫 .cpp 就出現(xiàn)了問(wèn)題:
#include "../../../include/resource/map/generation.hpp"
然后 clangd就會(huì)報(bào)一萬(wàn)個(gè)錯(cuò)誤。
問(wèn)題追溯
能產(chǎn)生這個(gè)問(wèn)題基本上有兩種可能:cmake 編譯問(wèn)題,clangd 的問(wèn)題。
首先嘗試編譯 cmake 項(xiàng)目,發(fā)現(xiàn)能夠編譯成功且運(yùn)行,說(shuō)明項(xiàng)目是能夠找到頭文件的,但 clangd 找不到。
因此,需要顯示指定頭文件存放的文件夾,來(lái)告訴 clangd 我的本地頭文件存放在哪里。
問(wèn)題解決
回到CmakeList.txt,在 add_executable() 后面填寫:
# 頭文件路徑
target_include_directories(SDL_T PRIVATE
"${CMAKE_SOURCE_DIR}/include"
)
這個(gè)路徑指向自己的頭文件路徑,之后重新 build 就可以解決這個(gè)問(wèn)題了。
之后就不需要寫很長(zhǎng)的 ../ 了,回到 .cpp 文件,頭文件引用改為: #include "resource/map/generation.hpp"即可。

浙公網(wǎng)安備 33010602011771號(hào)