【问题标题】:Make: Shall we give same targets for multiple rules?Make:我们应该为多个规则指定相同的目标吗?
【发布时间】:2019-12-02 07:25:14
【问题描述】:

我对 GNUmakefiles 很陌生。

我将放置两条具有相同目标模式的规则,如下所示:

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

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

我在上面的 makefile 中提到过。因为对于少数文件,先决条件会改变。构建按预期工作。但我不太确定这是否是制定此类规则的正确方式?如果这不是正确的方法。谁能分享我们如何简化此操作的最佳方法?

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

【问题讨论】:

  • 也许this answer可以帮助你
  • 嗨,泽尔内斯,这与接收无关。它关于目标。如果我们有相同的收据,您在上面共享的链接适用。我正在寻找具有多个规则处理的相同目标

标签: makefile gnu-make


【解决方案1】:

Make 不反对具有非空配方的多个并发 pattern 规则。事实上,这是完全合法的。

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

因此,目标可能不会被第二个目录中的源更新(被第一个目录中的旧源隐藏)。如果你没问题(例如源目录之间没有冲突),那么就这样做吧。

【讨论】:

  • 马特,感谢您的回答。您能否举一些 target::prerequisite 规则的例子?这样我就可以检查它是否适合我的工作环境。
  • @santosh 你可以阅读this。但这些是普通规则,而不是模式规则。所以你可能不需要它们。
猜你喜欢
  • 1970-01-01
  • 2011-10-28
  • 1970-01-01
  • 2017-10-13
  • 2023-03-06
  • 1970-01-01
  • 2016-08-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多