В nmake.exe используется самый простой способ: выполнять только один проход за раз. Предполагается, что он станет частью более широкой цепочки инструментов. Поэтому, если у вас есть многопроходные зависимости, вам понадобится несколько проходов nmake. Если ваш процесс сборки требует более 3 проходов, вы, вероятно, делаете A Bad Thing, и вам следует исправить свой процесс. И для громкого крика, если вам нужно несколько проходов, просто напишите сценарий, чтобы сделать это.

етилnmake.exe ограничивает поиск правил вывода одним отсутствующим файлом. Я не нахожу упоминания о проблеме в Интернете. Я что-то пропустил?

$ cat Makefile
.SUFFIXES: .a .b .d .e

all: abc.e

.a.b:
        copy $** $@

.b.d:
        copy $** $@

.d.e:
        copy $** $@

$ touch abc.a

$ nmake
NMAKE : fatal error U1073: don't know how to make 'abc.e'
Stop.

$ nmake -n abc.a
'abc.a' is up-to-date

$ nmake -n abc.b
        copy abc.a abc.b

$ nmake -n abc.d
NMAKE : fatal error U1073: don't know how to make 'abc.d'
Stop.

Этот же Makefile производит следующее с GNU make:

$ make -n 
copy abc* abc.b
copy abc* abc.d
copy abc* abc.e
rm abc.b abc.d

Конечно,$** макро иcopy команда не так полезна в GNU make. ;-)

Ваша версияnmake.exe справиться с этим лучше? Есть ли магический переключатель? Или это действительно так сломано, как кажется?