为什么automake无法生成Makefile.in

时间:2011-03-22 05:20:49

标签: makefile autoconf automake

尝试使用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 个答案:

答案 0 :(得分:7)

Makefile.am: object `md5.$(OBJEXT)' created by `md5.cc' and `md5.c'

是导致Automake中止的错误消息。这两个文件必须编译为md5.o,这是一个问题。

你可以重命名这两个文件中的一个吗?

答案 1 :(得分:2)

它在第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
...

答案 2 :(得分:0)

我有一个用automake配置的程序。该程序有一个脚本来进行设置,包括:

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

正如我所看到的那样,差异在于autoconf步骤是最后一步,而不是在中间。