2

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

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

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

那可能吗?谢谢!

4

2 回答 2

0

没有办法做到这一点。

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

于 2013-06-02T02:31:07.180 回答
0

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

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

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

您可以自己利用此功能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通话中即可。

于 2021-06-12T08:01:21.497 回答