Есть FreeBSD6.2, на которой я пытаюсь с пом. GNU autotools собрать некий shared library (.so). Пользуясь один из тюториалов, сооружаю такой configure.in:AC_INIT(libfoobar.c)
AM_INIT_AUTOMAKE(libfoobar,0.0.1)
AM_PROG_LIBTOOL
AC_PROG_CC
AC_PROG_INSTALL
AC_PROG_RANLIB
AC_OUTPUT(Makefile)далее скармливаю его:
$ aclocal19
aclocal:configure.in:3: warning: macro `AM_PROG_LIBTOOL' not found in library
$ autoconf
configure.in:3: error: possibly undefined macro: AM_PROG_LIBTOOL
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.Собсно на этом затык. Кто знаком с автотулз - помогите
>далее скармливаю его:
>
>$ aclocal19
>aclocal:configure.in:3: warning: macro `AM_PROG_LIBTOOL' not found in library
Э-э-э-э-э, мамо, а 'libtoolize' где?
> Э-э-э-э-э, мамо, а 'libtoolize' где?В каком месте его запускать? И есть ли некий канонический пример для сборки простой shared library?
>> Э-э-э-э-э, мамо, а 'libtoolize' где?
>
>В каком месте его запускать? И есть ли некий канонический пример для
>сборки простой shared library?запускать в каталоге проекта.
макрос с ranlib кстати устарел.
>> Э-э-э-э-э, мамо, а 'libtoolize' где?
>
>В каком месте его запускать?Вот у меня есть такой shell скрипт, reconf.sh называется, который лежит в корневом каталоге сорсов моего проекта, и который я запускаю каждый раз когда мне надо /.configure запустить:
8<------------reconf.sh-------------------
#!/bin/sh
rm -f config.cache
echo "- aclocal."
aclocal -I m4
echo "- libtoolize."
libtoolize --copy --force
echo "- autoconf."
autoconf
echo "- autoheader."
autoheader
echo "- automake."
automake --foreign --add-missing --copy
echo "- ./configure."
./configure8<----------------------------------------
И есть ли некий канонический пример для
>сборки простой shared library?
>Вот у меня есть такой shell скрипт, reconf.sh называется,autoreconf?
>>Вот у меня есть такой shell скрипт, reconf.sh называется,
>
>autoreconf?Ну вообще то да, autoreconf то же самое делает.
Просто свой reconf.sh я написал еще до того как товарищи из GNU выпустили autoreconf - так он у меня по проектам и кочует, с минимальными изменениями :)
А свой скрипт я тут привел для того чтобы наглядно показать где именно в последовательности вызовов autotools нужно вызывать libtoolize.
>> Э-э-э-э-э, мамо, а 'libtoolize' где?
>
>В каком месте его запускать? И есть ли некий канонический пример для
>сборки простой shared library?
в небольших проектах нужен небольшой makefile:TARGET = libproject
LIBS = -lextlib
CFLAGS = -O2 -WallCC = g++
all: $(TARGET).so $(TARGET).a
$(TARGET).so: $(patsubst %.cpp, %.o, $(wildcard *.cpp))
$(CC) -shared -fPIC -o $@ $^ $(LIBS)$(TARGET).a: $(patsubst %.cpp, %.o, $(wildcard *.cpp))
ar rvs $@ $^%.o: %.cpp
$(CC) -c -MD $< $(CFLAGS)include $(wildcard *.d)
.PHONY: clean
clean:
rm -f *.a
rm -f *.so
rm -f *.d
rm -f *.o
Выкидывай autotools, это морально устаревшее ублюдство.Юзай scons или cmake, документация на их сайтах с примерами. Для твоих целей надо будет написать максимум 5 строчек.
>Выкидывай autotools, это морально устаревшее ублюдство.
>
>Юзай scons или cmake, документация на их сайтах с примерами. Для твоих
>целей надо будет написать максимум 5 строчек.Это как Вы выражаетесь "ублюдство" заткнет Ваши мейки шмейки и кумейки. А если не умеем пользоваться то не надо пороть глупости(хотя теперь понятно почему Вы записались под анонимом) а лучше бы взяли и почитали бы документацию GNU Autotool. Прежде чем говорить, надо хотя бы немного знать
Ахха, соберите CMAKE'ом netatalk из гит репы для опенка :)