В более крупном проекте я настроил ./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
Это тоже прекрасно работает - когда я вызываю make check
в подкаталоге foo
, выполняются только тесты foo.
Однако , когда я сейчас вызываю make check
в ./tests
, , все тесты выполняются дважды . Один раз через global_test
и один раз через локальные тестовые программы.
Если я опущу оператор SUBDIRS
в глобальном Makefile.am
, make-файлы подкаталога не получат сборку. Если я опускаю TESTS
из локальных Makefile.am
, make check
ничего не делает для локальных каталогов.
Я не так хорошо знаком с automake, но я почти уверен, что есть какой-то способ решить эту дилемму. Кто-нибудь здесь может дать мне подсказку?