我有一个autotools项目。在其中一个目录中,我想在make过程完成后运行一个脚本 。换句话说,我想选择最后执行的“假”目标。或者,我可以使用专用的m4宏(我只知道哪一个......)。 有什么想法吗?
由于
答案 0 :(得分:3)
我假设通过“autotools”,你使用的是Automake以及Autoconf。我可以看到两种方法。
您可以在Makefile.am中制作-hook
规则。但是,这只能针对某些默认目标执行:install-data
,install-exec
,uninstall
,dist
和distcheck
。因此,要制定一个将在install-exec
之后立即运行的规则,请将其命名为install-exec-hook
。然后只需在该规则的配方中运行脚本。
但是,根据您问题的措辞,您似乎希望在构建后运行脚本。如果是这种情况,您可以使用all
目标自定义all-local
目标,然后在此目标的配方中运行脚本。请注意,根据Automake文档,
使用'-local'目标,没有特别保证 执行顺序;通常,它们是早期运行,但是使用并行make, 没有办法确定这一点。
但是,由于all
目标是假的,因此在构建所有内容之前不应该运行。不过,如果您可以在安装后运行脚本,我会建议这样做,因为执行顺序是有保证的。