#c #makefile #autotools #googletest
#c #makefile #autotools #googletest
Вопрос:
Мне не удается сгенерировать тестовый исполняемый файл, содержащий все мои тесты Google с помощью autotools.
Наш проект разработки довольно большой и содержит несколько модулей. Итак, я хочу, чтобы каждый модуль создавал тестовый lib / объектный файл, а затем объединял их для создания одного тестового exec-файла (фактически через make test
)
Этот Makefile.am компилируется, но не запускает тест: (тесты не регистрируются автоматически, они выполняются с 0 test)
noinst_LTLIBRARIES = libtest2.la
libtest2_la_SOURCES = test2.cpp
libtest2_la_LIBADD = lib/libgtest.la
libtest2_la_CXXFLAGS = -I./include
TESTS = testall
check_PROGRAMS = testall
testall_SOURCES = test2.cpp
testall_CXXFLAGS = -I./include
testall_LDADD = libtest2.la lib/libgtest_main.la
Конечно, это работает (но это не то, чего я не хочу):
testall_SOURCES = test2.cpp
testall_CXXFLAGS = -I./include
testall_LDADD = lib/libgtest_main.la
В чем реальная разница между обоими? Как я могу заставить эти тесты работать в моем проекте?
Ответ №1:
Вики-страница Google Test’s Primer содержит специальный раздел, посвященный тестам в библиотеках. Это сформулировано для пользователей Visual C , но на самом деле применимо и к статическим библиотекам в GCC. Короче говоря, вы должны ссылаться на свои библиотеки с помощью тестов, чтобы компоновщик не мог их удалить.
Комментарии:
1. Спасибо. Дополнительная информация доступна на osdir.com/ml/gcc.g .general/2006-04/msg00036.html . Я заставил его работать с —whole-archive .