如何使%通配符使规则成为假的



我有以下通配符"编程";将二进制文件上传到设备的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.

基本上有两种可能性:

  1. 您提前知道可能遇到的%-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 $^
    
  2. 你事先不知道你会遇到什么目标。使用相同的Makefile,但传递目标前缀列表以在命令行上构建:

    $ make tangnano-prog P="blinky foo bar"
    

相关内容

  • 没有找到相关文章

最新更新