В моем проекте есть два типа файлов, оба созданы с использованием одних и тех же команд, но с предварительными условиями:
%.blvp: lab_bd.act %.ext
%.slvp: lab_syn.act %.ext
%.blvp %.slvp:
$(eval x := $(basename $@))
act2lvp $< $x
lvp -sDEv $x.ext $x.prs && touch $@
Единственное отличие состоит в том, что .blvp
файлы используют lab_bd.act
и .slvp
используйте lab_syn.act
.Какой бы файл это ни был, он должен быть первым аргументом для act2lvp
.
Однако все вышеперечисленные предпосылки не переносятся в правило (т. Е. Оценивается act2lvp $x
; очевидно, $^
пусто.
$ make xyz.slvp
act2lvp xyz
Usage: /usr/local/cad/bin/act2lvp <actfile> <processname>
makefile:17: recipe for target 'xyz.slvp' failed
make: *** [xyz.slvp] Error 1
Как получить пререквизиты сверху? Альтернативно, вы могли бы предложить альтернативный подход к этому обстоятельству?