У 'GCC' есть опция '-M' которая формирует все зависимости от заголовочных файлов:
используй ее.
ок отлично команда g++ -M -MM *.cpp выдала:
cairo_window.o: cairo_window.cpp cairo_window.h window.h
carioWindow.o: carioWindow.cpp xlib_cairo_window.h cairo_window.h \
window.h
current.o: current.cpp
factory.o: factory.cpp factory.h window.h shape.h xlib_cairo_window.h \
cairo_window.h shape_quad.h png_cairo_window.h shape_rect.h
main.o: main.cpp factory.h window.h shape.h
png_cairo_window.o: png_cairo_window.cpp png_cairo_window.h \
cairo_window.h window.h
shape_quad.o: shape_quad.cpp shape_quad.h shape.h window.h
shape_rect.o: shape_rect.cpp shape_rect.h shape.h window.h
xlib_cairo_window.o: xlib_cairo_window.cpp xlib_cairo_window.h \
cairo_window.h window.h
что оказалось даже более точно, чем воссозданые мной вручную зависимости ...
может есть возможность между строчек записать команды для исполнения этих зависимостей?