makeppgraph is a Perl module with graphical analysis of the dependency graph.
makeppgraph [ option ... ] [ pattern ... ]
They say "A picture is worth a thousand words". So let's draw your dependency or include graph from various viewpoints. Check out the gallery http://makepp.sourceforge.net/gallery/ to get some ideas of what you can do.
Each node represents a source file or a target, colored according to file name patterns. A file's node is rectangular. A phony target's node is oval. Each solid edge represents a direct dependency. Alternately or additionally you can display include relationships as dotted lines. For a more detailed but not so pretty textual view see makepplog.
But beware, even for a small build the complexity can be staggering! This is because with .o files and system includes you easily have twice as many nodes as source files. But that is nothing -- the number of edges often far exceeds that of nodes, due to multiple include statements. A crossing-free layout is usually impossible.
In real projects the complexity becomes insane. Techniques like template based source file generation, preprocessors (e.g. embedded SQL, interface definition languages, Qt library) or publishing of files to central directories (e.g. to have only one -I or -L option) make the graph explode. Even if edges are just one pixel wide, you end up with broad black stripes of criss-crossing edges.
Once you realize what really goes on, if you're lucky, you may be able to find a way of simplifying your build setup. But before you get there, you must drastically reduce the amount of information you display. To that end there are various selection, renaming and merging possibilities in makeppgraph described under Options.