Automake:将本地便利行为添加到 "make check"
Automake: adding local convenience behavior to "make check"
使用
的标准项目布局
$(src_topdir)/include
$(src_topdir)/src
$(src_topdir)/tests
我想 运行 在 $(src_topdir)/src
中键入 "make check" 时 $(src_topdir)/tests
中的所有测试,此外 运行 在 $(src_topdir)/src
.
Automake 提供了一个扩展来向 check
Makefile 目标添加额外的目标,通过添加(在 Makefile.am 中)我可以定义到
的目标 local-check
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
。
使用
的标准项目布局$(src_topdir)/include
$(src_topdir)/src
$(src_topdir)/tests
我想 运行 在 $(src_topdir)/src
中键入 "make check" 时 $(src_topdir)/tests
中的所有测试,此外 运行 在 $(src_topdir)/src
.
Automake 提供了一个扩展来向 check
Makefile 目标添加额外的目标,通过添加(在 Makefile.am 中)我可以定义到
local-check
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
。