配置不断找到错误的GLib

问题描述 投票:0回答:1

我的cygwin已安装glib1.2和glib2.0。我的configure.in包含以下几行:

AM_PATH_GLIB_2_0(,
[
        AC_DEFINE(HAVE_GLIB)
        LIBS="$LIBS $GLIB_LIBS"
        CFLAGS="$CFLAGS $GLIB_CFLAGS"
], [
        AC_MSG_ERROR([No glib. Bad.  Get it at:  http://www.gtk.org/. ])
])

不幸的是,GLIB_CONFIG宏包含:

echo -I${prefix}/include/glib-1.2

因此,每当我执行./configure时,我的makefile都会返回到此:

gcc  -g -O2 -I/usr/include/glib-1.2 

...然后所有调用2.x的代码都会抱怨。我可以通过对生成的生成文件进行一些手动编辑来解决此问题:

GLIB_CFLAGS = -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include
GLIB_CONFIG = /usr/bin/glib-config
GLIB_LIBS = -L/usr/lib -lglib-2.0

...但是要避免这就是为什么首先使用autoconf的原因。问题:

  1. 是否应该在某个地方存在另一个GLIB_CONFIG? 2.0是否应该在安装时更改了这一选项?我在/ usr / bin中戳了一下,那是那里唯一的gl *。
  2. 我不确定我是否知道在配置过程GLIB_CONFIG中被调用的位置
automake
1个回答
0
投票

我个人将通过调用pkg-config宏在configure.ac中使用PKG_CHECK_MODULES

m4_pattern_forbid([PKG_CHECK_MODULES])dnl
PKG_CHECK_MODULES([GLIB20], [glib-2.0], [], [dnl
  AC_MSG_ERROR([
   +===================================================+
   | Could not find the required glib-2.0 dev package. |
   | Install the glib2-devel or libglib2-dev package   |
   | or from http://www.gtk.org/ directly.             |
   +===================================================+
])
])

m4_pattern_forbid阻止在未定义autoreconf宏的情况下成功执行PKG_CHECK_MODULES,并且您可以使错误消息适应您的内心需求。

PKG_CHECK_MODULES宏适用于大量库,并且清楚地定义了您要查找的API。只需检查/usr/lib64/pkgconfig/*.pc文件(系统的确切位置可能会有所不同)。

然后在Makefile.amMakefile-files文件中,可以添加GLIB20标志,例如

bin_PROGRAMS  = foo
foo_SOURCES   = foo-main.c
foo_CPPFLAGS  = $(top_srcdir)/include
foo_LDADD     = $(top_builddir)/libfoo.la

foo_CPPFLAGS += $(GLIB20_CFLAGS)
foo_LDADD    += $(GLIB20_LIBS)
© www.soinside.com 2019 - 2024. All rights reserved.