Я только что выполнил тестовый пример, и поведение, которое я получил, не соответствует вашему описанию.
Предположим, у меня есть два make-файла, ...
nuit.mak:
A=17
!include nuit-a.mak
A=5
all: child main
main:
@echo A = $(A)
И nuit-a.mak:
child:
@echo A = $(A)
Вот результаты, которые я вижу:
c:\dev\make>nmake -f nuit.mak main
A = 5
c:\dev\make>nmake -f nuit.mak child
A = 17
c:\dev\make>nmake -f nuit.mak all
A = 17
A = 5