Ситуация стандартная - надо сделать "умную" зависимость.
Пример: есть четыре файла
s1.cpp, h1.h,
s2.cpp, h2.h
h1.h включается как в s1.cpp, так и в s2.cpp
h2.h включается только в s2.cpp
Задача: построить makefile так, что бы при изменении h1 перекомпилировались бы s1 и s2, а при изменении h2 - только s2.
Тривиальное решение заключающееся в "ручном" указание зависимостей - не катит. Слишком много хидерников и исходников, и уследить, что во что включается - просто не возможно.
Сейчас компилится все, при изменении чего либо одного:
...делает, вроде, ровно то, о чем ты говоришь. Под виндой не знаю, но думаю, скрипт, выполняющий функции этой ютилиты (выдергивать имена хедеров и приписывать в makefile) написать не очень сложно. Может, есть и другие способы.