почему automake не может сгенерировать Makefile.in - PullRequest
5 голосов
/ 22 марта 2011

Попытка использовать automake / autoconf (версии 1.10 и 2.61, соответственно). Все работает нормально, кроме automake не генерирует Makefile.in.

Есть несколько предупреждений, но я не думаю, что они значительны. Тем не менее, последняя строка заставляет меня думать, что он генерирует что-то, чего не должен, и останавливается там. В проекте есть файлы md5.cc и md5.c.

xanadu:fsd wwilliam$ automake --add-missing
configure.ac:46: warning: AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS
/var/tmp/autoconf/autoconf-15~193/SRC/autoconf/lib/autoconf/specific.m4:421: AC_USE_SYSTEM_EXTENSIONS is expanded from...
/var/tmp/autoconf/autoconf-15~193/SRC/autoconf/lib/autoconf/functions.m4:1677: AC_FUNC_STRNLEN is expanded from...
configure.ac:46: the top level
configure.ac:46: warning: AC_RUN_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS
configure.ac:46: warning: AC_COMPILE_IFELSE was called before AC_GNU_SOURCE
/var/tmp/autoconf/autoconf-15~193/SRC/autoconf/lib/autoconf/specific.m4:340: AC_GNU_SOURCE is expanded from...
configure.ac:46: warning: AC_RUN_IFELSE was called before AC_GNU_SOURCE
configure.ac:46: warning: AC_COMPILE_IFELSE was called before AC_AIX
/var/tmp/autoconf/autoconf-15~193/SRC/autoconf/lib/autoconf/specific.m4:455: AC_AIX is expanded from...
configure.ac:46: warning: AC_RUN_IFELSE was called before AC_AIX
configure.ac:46: warning: AC_COMPILE_IFELSE was called before AC_MINIX
/var/tmp/autoconf/autoconf-15~193/SRC/autoconf/lib/autoconf/specific.m4:474: AC_MINIX is expanded from...
configure.ac:46: warning: AC_RUN_IFELSE was called before AC_MINIX
Makefile.am: object `md5.$(OBJEXT)' created by `md5.cc' and `md5.c'

Соответствующее содержимое configure.ac:

AC_INIT(testapp, 1.1, user@blah.com)
AM_INIT_AUTOMAKE(testapp,1.1)
AC_OUTPUT(Makefile)

Содержимое Makefile.am:

AUTOMAKE_OPTIONS = foreign

CFLAGS=-O2
bin_PROGRAMS = testapp
testapp_SOURCES = interface.cc interface.hh keymgr.cc keymgr.hh main.cc manage.cc manage.hh md5.c md5.cc md5.h mm.cc mm.hh mysqldb.cc mysqldb.h testapp.cc testapp.h

Я гуглил проблему, но не нашел ничего полезного.

Запущены следующие команды:

autoscan
mv configure.scan configure.ac
(edit configure.ac)
autoconf
(edit Makefile.am)
aclocal
automake --add-missing

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

Ответы [ 3 ]

7 голосов
/ 22 марта 2011
Makefile.am: object `md5.$(OBJEXT)' created by `md5.cc' and `md5.c'

- это сообщение об ошибке, которое приводит к прерыванию Automake.Эти два файла должны быть скомпилированы в md5.o, так что это проблема.

Можете ли вы переименовать один из этих двух файлов?

2 голосов
/ 26 октября 2012

Жалуется на строку 46, которую вы не предоставляете на свой вопрос.
В любом случае, чтобы решить эту проблему, вы должны добавить AC_USE_SYSTEM_EXTENSIONS в ваш configure.ac.

пример:

AC_INIT(testapp, 1.1, user@blah.com)
AM_INIT_AUTOMAKE(testapp,1.1)
AC_OUTPUT(Makefile)
AC_USE_SYSTEM_EXTENSIONS
AC_PROG_C
...
0 голосов
/ 22 марта 2011

У меня есть одна программа, которую я настраиваю с помощью automake. Эта программа имеет скрипт для настройки, который состоит из:

aclocal -I config &&
libtoolize --automake &&
autoheader &&
automake --foreign --add-missing &&
autoconf

Разница, на мой взгляд, в том, что в этом шаг autoconf последний, а не в середине.

...