LINUX.ORG.RU

пара вопросов по autoconf.


0

0

Компилю .so библиотеку. Makefile.am такой:

lib_LTLIBRARIES = libmy.la libmy_la_SOURCES = my.c my.h libmy_la_LIBDADD = -ljpeg

EXTRA_DIST = my.c my.h

В итоге получается нормальная .so-шка, но:

1) что прописать в Makefile.am, чтобы при make install в $LIBDIR копировались _только_ реальные .so объекты, а то по дефолту копируются .la + .lo + ссылки на .so + .so ?

2) в итоге libmy.so не зависит от -ljpeg, как правильно прописать зависимость ?

anonymous

добавляешь в configure.in строку :
AC_CHECK_LIB ( [jpeg], [main], , AC_MSG_ERROR("cannot find libjpeg.so") );
в результате получишь зависимость.

fura13 ★★★
()
Ответ на: комментарий от anonymous

а ещё - либа получается libmy.so.0.0.0 - как устанавливать версию ?
Спасибо.

anonymous
()
Ответ на: комментарий от anonymous

К сож здесь я здесь тебе могу посоветовать только вписать ручками в Makefile.am явные цель install или install-lib как хочешь. Кстати и тогда же сможешь контролировать версию через autoconf . Как я это вижу : у тебя есть переменная в Makefile.am : my_lib_version = @lib_version@

...

install-lib : $(my_lib_name) # или как она у тебя называтся будет <tab><tab>тут какой либо способ инсталлирования, <tab><tab>который тебе больше нравиться, а имя библиотеки : <tab><tab>$(my_lib_name).$(my_lib_version)

Я конечно понимаю что писать неявные цели проще да и удобнее. Но мне, например больше нравиться, писать Makefile самому.

Или же , если сильно не хочется писать самому то посмотри как делается это в других установочных пакетах(берешь какой нить пакет в которо имеется Makefile.am и просматриваешь ).

fura13 ★★★
()
Ответ на: комментарий от fura13

А ну да! если это надо то ... @lib_version@ устанавливается так : В configure.in нужно вписать строчки :

lib_version="0.1"; # или другая какая тебе в голову придет ... AC_SUBST ( lib_version );

fura13 ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.