Makefile 如何在自动工具中强制最终目标

Makefile 如何在自动工具中强制最终目标,makefile,target,autotools,Makefile,Target,Autotools,我有一个自动工具项目。在它的一个目录中,我想在make过程完成后运行一个脚本。换句话说,我希望有一个选项来选择最后执行的“虚假”目标。或者,我可以使用专用的m4宏(我只知道哪一个…)。 有什么想法吗 谢谢我假设通过“自动工具”,您使用的是Automake和Autoconf。我可以看到两种方法 您可以在Makefile.am中创建-hook规则。但是,只能对某些默认目标执行此操作:install data、install exec、uninstall、dist和distcheck。因此,要创建一个

我有一个自动工具项目。在它的一个目录中,我想在make过程完成后运行一个脚本。换句话说,我希望有一个选项来选择最后执行的“虚假”目标。或者,我可以使用专用的m4宏(我只知道哪一个…)。 有什么想法吗

谢谢

我假设通过“自动工具”,您使用的是Automake和Autoconf。我可以看到两种方法

您可以在Makefile.am中创建
-hook
规则。但是,只能对某些默认目标执行此操作:
install data
install exec
uninstall
dist
distcheck
。因此,要创建一个在
install exec
之后立即运行的规则,请将其称为
install exec hook
。然后只需运行该规则配方中的脚本

不过,根据您问题的措辞,您似乎希望在构建后运行脚本。如果是这种情况,您可以使用
all local
目标自定义
all
目标,然后在此目标的配方中运行脚本。注意,根据Automake文档

对于'-local'目标,没有特别保证 执行令;通常,它们运行得很早,但使用并行make, 这是无法确定的

但是,由于
all
目标是虚假的,因此在构建所有内容之前,它不应该运行。不过,如果您可以在安装后运行脚本,我建议您这样做,因为执行顺序是有保证的