В деле написания Makefile есть нехитрые приёмы, которые делают хедеры зависимостями для сборки объектных файлов, что хорошо и правильно. Если состав проекта меняется (исходных файлов стало больше или меньше), невредно и почистить промежуточные файлы (*.d). У меня это "make clean".