В моем проекте autotools есть несколько модульных тестов. один из этих тестов (filereader
) необходимо прочитать файл (data/test1.bin
)Как заставить autotools проверять файлы?
Вот мой макет файловой системы: - libfoo/тесты/filereader.c - libfoo/тесты/данные/test1.bin
и my libfoo/tests/Makefile.am:
AUTOMAKE_OPTIONS = foreign
AM_CPPFLAGS = -I$(top_srcdir)/foo
LDADD = $(top_builddir)/src/libfoo.la
EXTRA_DIST = data/file1.bin
TESTS = filereader
check_PROGRAMS= filereader
filereader_SOURCES = filereader.c
Это отлично работает, пока я делаю встраиваемые сборки. Однако при запуске тестового набора вне дерева (например, make distcheck
) тест filereader
больше не может найти входной файл.
Это, очевидно, потому, что только исходное дерево содержит входной файл, но не дерево сборки.
Интересно, что такое канонический способ устранить эту проблему?
- скомпилировать каталог тест-файл в UnitTest (
AM_CPPFLAGS+=-DSRCDIR=$(srcdir)
) - проходят квалифицированный входной файл в качестве аргумента командная_строки теста? (например,
$(builddir)/filereader $(srcdir)/data/file1.bin
) - Скопируйте исходный файл из исходного дерева в дерево сборки? (
cp $(srcdir)/data/file1.bin $(builddir)/data/file1.bin
? Как бы выглядело правильное правило? ??)
, но если полный путь get скомпилирован в unittest, он больше не перемещается :-( –
Сборка не должна быть перемещаемой - в Makefile также выдается путь к ней. Если вы перемещаете свои источники вокруг, вы * должен * воссоздать каталог сборки. –