【发布时间】:2010-01-26 16:46:41
【问题描述】:
在一个较大的项目中,我设置了./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:
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
这也很有效 - 当我在子目录 foo 中调用 make check 时,只执行 foo 测试。
但是,当我现在在 ./tests 中调用 make check 时,所有测试都会执行两次。一次通过global_test,一次通过本地测试程序。
如果我在全局 Makefile.am 中省略了 SUBDIRS 语句,则子目录 makefile 不会生成。如果我从本地 Makefile.am 中省略 TESTS,make check 不会对本地目录执行任何操作。
我对 automake 不太熟悉,但我很确定有一些方法可以解决这个难题。这里有人可以给我提示吗?
【问题讨论】: