Yeah, you have to run GCC with `-MMD -MP` so you get .d files along with your .o files. Then in my own Makefile I have:
include $(shell find $(BUILD_DIR) -type f -name '\*.d')
so that make will check for header file changes.