自动生成:向"make check"添加本地便利行为



标准项目布局

$(src_topdir)/include
$(src_topdir)/src
$(src_topdir)/tests

我想在$(src_topdir)/src中输入"make check"时运行$(src_topdir)/tests中的所有测试,以及在$(src_topdir)/src中运行任何配置的测试。

Automake提供了一个扩展,通过添加(在Makefile.am中)目标local-check(我可以将其定义为

),向check Makefile目标添加额外的目标。
local-check:
        cd ../tests && $(MAKE) $(AM_MAKEFLAGS) check

虽然这允许我在$(src_topdir)/src目录中满意地执行make check,但不幸的是,它中断了从$(src_topdir)目录对make check的调用。这是因为从$(src_topdir)调用递归地进入$(src_topdir)/src$(src_topdir)/tests,触发$(src_topdir)/tests中的测试两次。

是否有一种方法可以让我在$(src_topdir)/src中改变我的Makefile.am,使本地make check调用触发所需的额外测试,而来自其余工具的make check调用不受影响?

在Automake中没有办法这样做。

一个解决方法是简单地更改目标的名称。也就是说,不是输入make check,而是输入make mycheck(或者您喜欢的任何类型)。那么mycheck规则就很容易写了。

另一个想法是简单地省略子目录Makefiles。现在,对于整个树来说,使用单个Makefile通常会更好。然后这个问题就解决了——或者,如果您真的想要这样做,您可以编写一个只有单个check目标的小型src/Makefile

最新更新