【问题标题】:Is there any target on Automake that is executed before the automake Makefile rules?在 automake Makefile 规则之前执行 Automake 上是否有任何目标?
【发布时间】:2012-09-04 06:08:23
【问题描述】:

我一直在尝试生成在之前执行的 Makefile 规则 自动生成 Makefile 规则。我已经看到我可以定义“all-local”和“hooks”规则,但是这些是在“all”和其他规则之后执行的 例如规则。

有什么方法可以让我在 automake 添加规则?我想自动生成文件 目录,但通过 make 的编译过程总是试图 按照 automake Makefile 规则编译程序。如果我可以添加一个 “pre-”规则,我可以生成需要的文件,然后让正常 编译过程运行。

我知道 BUILT_SOURCES,但我试图不使用它

这可能吗? 谢谢!

【问题讨论】:

  • 这就是BUILT_SOURCES 的用途——你到底为什么不想使用它?

标签: hook automake


【解决方案1】:

没有办法做到这一点。

一般来说,在 Makefile 中,如果你想这样做,你应该考虑在需要的地方添加适当的依赖项。

【讨论】:

  • 这不是真的:请参阅my answer 了解如何做到这一点。
【解决方案2】:

Makefiles 可以有相同的目标但有不同的先决条件,在这种情况下,先决条件将被合并:

# The following will be equivalent to 'target: prerequisite1 prerequisite2'
target: prerequisite1
target: prerequisite2

这可以从the GNU make manual 推断出来(那里的解释真的很糟糕,但我没有找到更好的解释)。

您可以在自己的Makefile.am 中利用此功能:

all: all-prehook

all-prehook:
    echo Prehook called here

.PHONY: all-prehook

小心 automake 会抱怨(Warning: overrides Automake target 或类似的东西)。您可以使用 -Wno-override 将其关闭:如果您使用的是 autoconf,只需将其添加到您的 AM_INIT_AUTOMAKE 调用中即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-25
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    • 1970-01-01
    相关资源
    最近更新 更多