Get all header file include directories in Mingw

⌚Time: 2026-05-03 22:57:00

👨‍💻Author: Jack Ge

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.