我的第一个autotools项目,可能是简单而愚蠢的东西:它正在创建一个无法找到glib和其他第三方库的makefile。 (运行Ubuntu Linux,如果重要的话,编译C静态库。)
Configure.ac包含以下行:
PKG_CHECK_MODULES([libglib], [glib-2.0 >= 2.28])
PKG_CHECK_MODULES([libobject], [gobject-2.0 >= 2.28])
PKG_CHECK_MODULES([libuuid], [uuid])
Makefile.am如下
lib_LIBRARIES=libblah.a
libblah_a_SOURCES=blah.c util.c
libblah_a_CPPFLAGS=$(libglib_CFLAGS) $(libobject_CFLAGS) $(libuuid_CFLAGS)
libblah_a_LIBADD=$(libglib_LIBS) $(libobject_LIBS) $(libuuid_LIBS)
运行autoreconf --install会生成Makefile.in:
libglib_CFLAGS = @libglib_CFLAGS@
libglib_LIBS = @libglib_LIBS@
libobject_CFLAGS = @libobject_CFLAGS@
libobject_LIBS = @libobject_LIBS@
libuuid_CFLAGS = @libuuid_CFLAGS@
libuuid_LIBS = @libuuid_LIBS@
看起来不错!除了配置脚本声明它发现这些库发出了一个Makefile,它将上面的行转换成这种无用的行为:
libglib_CFLAGS =
libglib_LIBS =
libobject_CFLAGS =
libobject_LIBS =
libuuid_CFLAGS =
libuuid_LIBS =
帮助!
编辑:这是完整的configure.ac文件:
AC_INIT([amblah], [1.0], [bug-automake@gnu.org])
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
AC_PROG_CC
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([
Makefile
libblah/Makefile
tests/Makefile
])
AC_OUTPUT
AC_PROG_RANLIB
PKG_PROG_PKG_CONFIG(0.26)
PKG_CHECK_MODULES([libglib], [glib-2.0 >= 2.28])
PKG_CHECK_MODULES([libobject], [gobject-2.0 >= 2.28])
PKG_CHECK_MODULES([libuuid], [uuid])
答案 0 :(得分:1)
卫生署!我看到了问题,这绝对是一个愚蠢的新问题。 AC_OUTPUT是它吐出Makefile输出等的原因。 GNU教程对此事实并不清楚,我在AC_OUTPUT下面放了一些行。因此,当AC_OUTPUT生成其输出时,不考虑这些行。通过将AC_OUTPUT移到最后,它解决了问题。