Как работать с autotools для создания файла Google test exec?

#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 .