%.out: %.input1 %.input2
merge $<1 $<2 $@
В правилах makefile нет автоматических переменных $1
и $2
, однако есть $^
, который является списком всех предварительных условий.Поскольку правило имеет только две предпосылки, оно расширяется до %.input1 %.input2
или, точнее, до $*.input1 $*.input2
.Следовательно:
%.out: %.input1 %.input2
merge $^ $@
должно быть достаточно.
.SULFFIXES
, IMO, не очень полезен, поскольку в нем используются неявные определения правил, которые нельзя увидеть и изменить.
[обновление]
Относительно цели doit
, чтобы предотвратить ее выполнение каждый раз, когда вам может потребоваться изменить команды правила на:
doit: project.out
# project.out merged
touch $@