When I use clangd to autocomplete code, I need to use compile_flags.txt to specify the header file directories for clangd.
For some C++ libraries, such as the GTK library, you can use the pkg-config tool to get all of its header file directories and add them.
But on a Windows system using the MinGW compiler, to get all of its header file directories, you can use this command
echo > nul.txt && g++ -v -E -x c++ nul.txt 2> flags.txt
Open the output flags.txt file and find this part
#include <...> search starts here:
D:/BuildTools/i686-7.3.0-release-posix-dwarf-rt_v5-rev0/mingw32/bin/../lib/gcc/i686-w64-mingw32/7.3.0/include/c++
D:/BuildTools/i686-7.3.0-release-posix-dwarf-rt_v5-rev0/mingw32/bin/../lib/gcc/i686-w64-mingw32/7.3.0/include/c++/i686-w64-mingw32
D:/BuildTools/i686-7.3.0-release-posix-dwarf-rt_v5-rev0/mingw32/bin/../lib/gcc/i686-w64-mingw32/7.3.0/include/c++/backward
D:/BuildTools/i686-7.3.0-release-posix-dwarf-rt_v5-rev0/mingw32/bin/../lib/gcc/i686-w64-mingw32/7.3.0/include
D:/BuildTools/i686-7.3.0-release-posix-dwarf-rt_v5-rev0/mingw32/bin/../lib/gcc/i686-w64-mingw32/7.3.0/include-fixed
D:/BuildTools/i686-7.3.0-release-posix-dwarf-rt_v5-rev0/mingw32/bin/../lib/gcc/i686-w64-mingw32/7.3.0/../../../../i686-w64-mingw32/include
End of search list.
So I just need to add these contents to compile_flags.txt.
-ID:/BuildTools/i686-7.3.0-release-posix-dwarf-rt_v5-rev0/mingw32/lib/gcc/i686-w64-mingw32/7.3.0/include/c++
-ID:/BuildTools/i686-7.3.0-release-posix-dwarf-rt_v5-rev0/mingw32/lib/gcc/i686-w64-mingw32/7.3.0/include/c++/i686-w64-mingw32
-ID:/BuildTools/i686-7.3.0-release-posix-dwarf-rt_v5-rev0/mingw32/lib/gcc/i686-w64-mingw32/7.3.0/include/c++/backward
-ID:/BuildTools/i686-7.3.0-release-posix-dwarf-rt_v5-rev0/mingw32/lib/gcc/i686-w64-mingw32/7.3.0/include
-ID:/BuildTools/i686-7.3.0-release-posix-dwarf-rt_v5-rev0/mingw32/lib/gcc/i686-w64-mingw32/7.3.0/include-fixed
-ID:/BuildTools/i686-7.3.0-release-posix-dwarf-rt_v5-rev0/mingw32/i686-w64-mingw32/include
Here it converts relative paths like ../; it should also work if not converted.