automake устанавливает цель перед проверкой - PullRequest
1 голос
/ 22 ноября 2011

Как я могу заставить automake установить одну из библиотек перед выполнением сценариев проверки?

В рамках проекта создается библиотека фиктивного тестирования для одной из библиотек, которые мы динамически загружаем (через вызов dlopen). Проблема в том, что мы не можем переопределить путь к нашей библиотеке для тестирования, так как есть еще ряд других библиотек, которые должны быть загружены (они устанавливаются другими компонентами, не скомпилированными непосредственно этим make-файлом).

Это сэкономило бы мне много работы, если бы я мог просто установить некоторую библиотеку до запуска сценариев проверки. Если мне нужно поместить его в отдельный make-файл и сначала вызвать его, тогда ничего страшного. По сути, мне просто нужно запустить make check, чтобы поступить правильно.

Ответы [ 2 ]

4 голосов
/ 22 ноября 2011

Цель make check должна проверить пакет перед его установкой. Automake не предлагает никакого способа обойти это. Идея состоит в том, что в случае сбоя make check вы можете вообще не устанавливать пакет. (Кроме того, если вы каким-то образом взломаете свои правила для установки во время make check, вы, вероятно, сломаете make distcheck.)

Обычный способ использования локальных библиотек перед установленными библиотеками заключается в добавлении .: к значению LD_LIBRARY_PATH во время ваших тестов. Использование libtool для сборки ваших локальных библиотек и ссылки на них будет обрабатывать все эти детали, которые можно исправить: выходные данные исполняемых файлов libtool в дереве сборки представляют собой сценарии, которые устанавливают эти переменные перед вызовом правильной выполнимости (скрытой в другом месте) для они используют местные библиотеки.

Другое решение, если вы все еще хотите выполнять тесты после установки, это не использовать make check, а make installcheck. Ожидается, что make installcheck будет запущен только после того, как пользователь запустит make install. Вы должны написать собственное правило installcheck-local.

0 голосов
/ 22 ноября 2011

Я не могу найти какой-либо официальный / правильный способ, но, похоже, работает следующее.Добавьте новую зависимость к check и используйте цель установки библиотек, но переопределяйте, какие библиотеки установлены.Например:

check_dummy: lib_LTLIBRARIES = libdummy.la
check_dummy: install-libLTLIBRARIES
check: check_dummy

Этот GNU конкретизировать Я верю.

...