0
我的第一個自動工具項目可能是簡單而愚蠢的:它創建了一個找不到glib和其他第三方庫的makefile。 (運行Ubuntu Linux操作系統,編譯C靜態庫如果該事項。)Autotools PKG_CHECK_MODULES未設置變量
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 - 安裝生成Makefile.in與此:
libglib_CFLAGS = @[email protected]
libglib_LIBS = @[email protected]
libobject_CFLAGS = @[email protected]
libobject_LIBS = @[email protected]
libuuid_CFLAGS = @[email protected]
libuuid_LIBS = @[email protected]
看起來不錯!配置腳本聲稱它發現這些庫還吐出一個Makefile,將上面的行轉換成這種無用的文件:
libglib_CFLAGS =
libglib_LIBS =
libobject_CFLAGS =
libobject_LIBS =
libuuid_CFLAGS =
libuuid_LIBS =
幫助!
編輯:以下是完整的configure.ac文件:
AC_INIT([amblah], [1.0], [[email protected]])
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])
當你直接運行'pkg-config'時,你會得到什麼輸出? –
也許你正在以'PKG_CONFIG = true'的模式運行配置腳本。 (請注意,這有點兒咄咄逼人:PKG_CONFIG = true有效地禁用了PKG_CHECK_MODULES,並且需要用戶正確地分配LDFLAGS和CPPFLAGS。) –
這對於那些只是缺少「AC_SUBST(XXX_CFLAGS)」和「AC_SUBST(XXX_LIBS)」庫? –