我的项目具有以下目录结构(隐藏了一些文件 清晰度):
Makefile.am
tests/
Makefile.am
a/
Makefile.am
b/
Makefile.am
c/
Makefile.am
如果我将所有测试都放在a/
,b/
和c/
中
TESTS
变量tests/Makefile.am
中的子目录,然后是
在make check
中tests/
,所有测试都会运行,即使其中一个测试中有一个测试
子目录失败。假设这是我想要的行为。
但是,使用此配置,我不能转到b/
,例如,和
运行make check
:由于那里没有TESTS
变量,make check
什么都不做。
所以我将TESTS
变量放在a/Makefile.am
,b/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 test
在tests/
完成了我想要的工作。
还有什么“Automaky”我可以做到实现同样的目标吗?
或者如果我在这里使用make --keep-going check
预期的方法
一旦子目录测试失败,不希望Make停止吗?