在一个更大的项目中,我已经设置./tests/Makefile.am
好在调用make check
. 该文件global_wrapper.c
包含设置/故障代码,它调用在几个子目录中实现的测试函数。
TESTS = global_test
check_PROGRAMS = global_test
global_test_SOURCES = global_wrapper.c foo/foo_test.c bar/bar_test.c
效果很好。但是测试需要很长时间,所以我希望能够选择只执行来自单个子目录的测试。我一开始就是这样做的。
我添加了子目录:
SUBDIRS = foo bar
在子目录中,我添加了本地包装器和Makefile.am
's:
TESTS = foo_test
check_PROGRAMS = foo_test
# the foo_test.c here is of course the same as in the global Makefile.am
foo_test_SOURCES = foo_wrapper.c foo_test.c
这也很有效——当我make check
在 subdirectory中调用时foo
,只执行 foo 测试。
但是,当我现在调用make check
时./tests
,所有测试都执行了两次。一次通过global_test
,一次通过本地测试程序。
如果我省略SUBDIRS
global 中的语句Makefile.am
,则子目录 makefiles 不会生成。如果我TESTS
从 local中省略Makefile.am
,make check
则不会对本地目录执行任何操作。
我对 automake 不太熟悉,但我很确定有一些方法可以解决这个难题。这里有人可以给我一个提示吗?