如何避免停止递归的`check`目标?

时间:2017-08-08 17:36:10

标签: makefile gnu-make autotools automake

我的项目具有以下目录结构(隐藏了一些文件 清晰度):

Makefile.am
tests/
  Makefile.am
  a/
    Makefile.am
  b/
    Makefile.am
  c/
    Makefile.am

如果我将所有测试都放在a/b/c/TESTS变量tests/Makefile.am中的子目录,然后是 在make checktests/,所有测试都会运行,即使其中一个测试中有一个测试 子目录失败。假设这是我想要的行为。

但是,使用此配置,我不能转到b/,例如,和 运行make check:由于那里没有TESTS变量,make check 什么都不做。

所以我将TESTS变量放在a/Makefile.amb/Makefile.am和。{ c/Makefile.am,并从TESTS中移除tests/Makefile.am变量。现在 我可以转到a/b/c/并运行make check来仅测试具体内容 项目的一部分。但是,由于每个人make check都可以 失败,现在make check中的“全局”tests/会尽快失败 子目录失败,这是Make的预期行为。

我目前的解决方法是在make --keep-going check中使用tests/,所以 根据{{​​3}}:

  

发生错误后尽可能继续。虽然目标是   失败了,那些依赖它的人,不能重新制作,另一个   这些目标的依赖关系可以完全相同。

这似乎会运行所有个人make check并退出 如果其中一个失败,则不是0。

我也可以将此make --keep-going check包装在新目标中 例如:

test:
        $(MAKE) $(AM_MAKEFLAGS) --keep-going check

现在make testtests/完成了我想要的工作。

还有什么“Automaky”我可以做到实现同样的目标吗? 或者如果我在这里使用make --keep-going check预期的方法 一旦子目录测试失败,不希望Make停止吗?

0 个答案:

没有答案