Autoconfig/Automake 无法为依赖的 D-BUS 库生成 AM_CFLAGS 和 AM_LDFLAGS。为什么?

Autoconfig/Automake 无法为依赖的 D-BUS 库生成 AM_CFLAGS 和 AM_LDFLAGS。为什么?

我想使用 automake/autoconfig 工具构建一个使用 DBUS 的程序。但make命令总是报错“dbus/dbus-glib.h”: No such file or directory。

我的操作系统是ubuntu 10.10。我安装了“dbus-1”和“dbus-glib-1”。我检查生成的 Makefile,发现 AM_CFLAGS 和 AM_LDFLAGS 都是空的。

有人可以帮忙吗?非常感谢!

这是我的代码:

配置.ac:

AC_INIT([my-app], [0.1])
AC_PREREQ([2.59])
AM_INIT_AUTOMAKE([1.10 -Wall no-define])
AC_CONFIG_HEADERS([config.h])
AC_PROG_CC
AM_PROG_CC_C_O
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
DBUS_REQUIRED=1.3.1
DBUS_GLIB_REQUIRED=0.82
GLIB_REQUIRED=2.26.0

PKG_CHECK_MODULES(DBUS, [dbus-1 >= $DBUS_REQUIRED dbus-glib-1 >= $DBUS_GLIB_REQUIRED])
AC_SUBST(DBUS_CFLAGS)
AC_SUBST(DBUS_LIBS)

Makefile.am:

AUTOMAKE_OPTIONS = subdir-objects
ACLOCAL_AMFLAGS = ${ACLOCAL_FLAGS}
bin_PROGRAMS = my_app
my_app_SOURCES = src/my-app.c
AM_CFLAGS= @DBUS_CFLAGS@
AM_LDFLAGS= @DBUS_LIBS@
dist_noinst_SCRIPTS = autogen.sh

我的应用程序.c

...
"#include" {{{<dbus/dbus-glib.h>}}}
...

答案1

我找到了根本原因。在configure.ac中,我应该在调用AC_CONFIG_FILES([Makefile])和AC_OUTPUT之前添加DBUS C/LD标志。然后Makefile中的AM_CFLAGS和AM_LDFLAGS就可以获得有效值。

答案2

你跑去aclocal引入所有相关的定义了吗?

相关内容