IncludeTree

Simple #include dependency printer.

  • Doesn't handle circular dependencies
  • Searches for files in the current directory only
#!/bin/sh  
  
# Prints a #include dependency tree  
# Reads arguments from either command line or stdin (but not both)  
  
DEPTH=  
  
extract_filename()  
{  
    sed 's/\W\*#include\W["<]\([^">]\*\)[">].*$/\1/g'  
}  
  
extract_includes()  
{  
    DEPTH="$DEPTH    ";  
    while read current; do  
        echo "$DEPTH$current"  
        grep '#include' "$current" | extract_filename | extract_includes 2> /dev/null  
    done  
}  
  
# read from commandline  
for FILE in $@; do  
    echo "$FILE:"  
    echo "$FILE" | extract_includes  
done  
  
# read from stdin  
if [ -z $@ ]; then  
    extract_includes  
fi