Automake: создание общего модуля, который не должен быть установлен - PullRequest
4 голосов
/ 26 ноября 2011

Как указать Automake для создания динамического модуля, который не должен быть установлен?

pkglib_LTLIBRARIES = mywrapper.la
mywrapper_la_LDFLAGS = -no-undefined -module -avoid-version

вызывает установку mywrapper.so в pkglibdir.

noinst_LTLIBRARIES = mywrapper.la
mywrapper_la_LDFLAGS = -no-undefined -module -avoid-version

приводит к static вспомогательная библиотека, которая будет построена вместо.

Рассматриваемый динамический модуль используется только для запуска набора тестов и, следовательно, не должен распространяться.

Ответы [ 2 ]

3 голосов
/ 26 ноября 2011

У меня была такая же проблема.Это то, что я сделал, в том числе комментарий к себе для дальнейшего использования:

# The rpath is necessary because stoopid libtool won't build a shared library
# if it's noinst_, because what POSSIBLE reason could you have to do that?
TEST_PLUGIN_LIBTOOL_FLAGS = \
    -module \
    -shared \
    -avoid-version \
    -export-symbols-regex "<whatever symbols you need to export>" \
    -rpath $(abs_builddir)

noinst_LTLIBRARIES = mywrapper.la
mywrapper_la_LDFLAGS = $(TEST_PLUGIN_LIBTOOL_FLAGS)
1 голос
/ 30 июня 2016

Вы можете использовать check_LTLIBRARIES для целей тестирования.Согласно унифицированной схеме именования Automake :

Специальный префикс 'check_' указывает, что рассматриваемые объекты не должны создаваться до тех пор, пока не будет выполнена команда 'make check'.Эти объекты также не установлены.

По умолчанию также генерируется статическая библиотека.Мне удалось заставить его так:

check_LTLIBRARIES = mywrapper.la
mywrapper_la_LDFLAGS = -no-undefined -module -shared -avoid-version -rpath /tmp

Вы также можете скомпилировать и запустить исполняемый файл набора тестов.

check_PROGRAMS = suite

suite_SOURCES = ...
suite_LDFLAGS = ...
suite_LDADD = ...

check-local:
    ./suite
...