Make:我们应该为多个规则指定相同的目标吗?

时间:2019-07-24 07:52:19

标签: makefile gnu-make

我对GNUmakefile很陌生。

我将按照相同的目标模式放置两个规则,如下所示:

$(TGTSIP)/$(VERILOG_DIR)/src/%: $(TGTDDVAPI)/$(VERILOG_DIR)/%
      $(test_file)

 $(TGTSIP)/$(VERILOG_DIR)/src/%: $(TGTMODEL)/%
      $(test_file)

i以上在makefile中提到。因为只有很少的文件,预需求会发生变化。Build可以正常工作。但是我不确定这是否是制定此类规则的正确方法?如果这不是正确的方法。任何人都可以分享我们简化这一过程的最佳方式吗?

为了进一步理解,我试图将文件从2条不同的路径复制到一个相同的位置。在这种情况下,目标是我们要复制的路径,先决条件是不同的路径。我们如何在单一规则中处理它?

1 个答案:

答案 0 :(得分:0)

Make不反对使用非空配方的多个并发 pattern 规则。实际上,这完全合法。

但是,请记住,在这种情况下,并发源的时间戳并不重要:两个 pattern 是否直接匹配(即,不是通过隐式链接)并且具有相同的词干长度那么第一个总是赢(并且没有发出警告)。然后,仅将获胜者的时间戳与目标的 时间戳进行比较。

因此,第二个目录中的源可能不会更新目标(被第一个目录中的旧源遮盖)。如果您认为还可以(例如,源目录之间没有冲突),则只需执行此操作。