配置不断发现错误的 GLib
Posted
技术标签:
【中文标题】配置不断发现错误的 GLib【英文标题】:configure keeps finding the wrong GLib 【发布时间】:2019-11-28 18:23:03 【问题描述】:我的 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 的代码都会抱怨。我可以通过对生成的 makefile 进行一些手动编辑来解决此问题:
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 的原因。问题:
-
是否还有另一个 GLIB_CONFIG 应该存在于某处? 2.0应该在安装时改变这个吗?我在 /usr/bin 里翻了一下,那是那里唯一的 gl*。
我不确定我是否理解在配置过程中调用 GLIB_CONFIG 的位置
【问题讨论】:
【参考方案1】:我个人会通过调用PKG_CHECK_MODULES
宏在configure.ac
中使用pkg-config
:
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.am
或 Makefile-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)
【讨论】:
以上是关于配置不断发现错误的 GLib的主要内容,如果未能解决你的问题,请参考以下文章
致命错误:glib.h:使用 vscode 和 mingw 时没有这样的文件或目录
我该如何解决这个错误? Gtk-WARNING **: GModule ...初始化检查失败:GLib 版本太旧(微不匹配)