我有以下通配符"编程";将二进制文件上传到设备的make规则。这显然不会产生一个真正的文件,所以应该标记为假的。但是,如何将%%通配符规则标记为假的?
%-tangnano-prog: %-tangnano.fs
openFPGALoader -b tangnano $^
.PHONY: %-tangnano-prog clean all
无论你放在哪里,这个虚假的规则都不会给出任何错误,所以很难判断它是否有效。但我相信它没有:
$ touch blinky-tangnano-prog
$ make blinky-tangnano-prog
make: 'blinky-tangnano-prog' is up to date.
基本上有两种可能性:
-
您提前知道可能遇到的
%-tangnano-prog
目标。只需将它们的所有前缀分配给一个make变量,使用make函数计算完整的目标名称并将其声明为假的:P := blinky foo bar T := $(addsuffix -tangnano-prog,$(P)) .PHONY: tangnano-prog $(T) tangnano-prog: $(T) %-tangnano-prog: %-tangnano.fs openFPGALoader -b tangnano $^
-
你事先不知道你会遇到什么目标。使用相同的Makefile,但传递目标前缀列表以在命令行上构建:
$ make tangnano-prog P="blinky foo bar"