如何在autotools中强制最终目标

时间:2013-07-18 14:44:48

标签: makefile target autotools

我有一个autotools项目。在其中一个目录中,我想在make过程完成后运行一个脚本 。换句话说,我想选择最后执行的“假”目标。或者,我可以使用专用的m4宏(我只知道哪一个......)。 有什么想法吗?

由于

1 个答案:

答案 0 :(得分:3)

我假设通过“autotools”,你使用的是Automake以及Autoconf。我可以看到两种方法。

您可以在Makefile.am中制作-hook规则。但是,这只能针对某些默认目标执行:install-datainstall-execuninstalldistdistcheck。因此,要制定一个将在install-exec之后立即运行的规则,请将其命名为install-exec-hook。然后只需在该规则的配方中运行脚本。

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

  

使用'-local'目标,没有特别保证   执行顺序;通常,它们是早期运行,但是使用并行make,   没有办法确定这一点。

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