我的项目依赖于一个库(更准确地说,GTK+),所以我在我的项目中添加了以下配置configure.ac
:
PKG_CHECK_MODULES([GTK], [gtk+-2.0])
AC_SUBST([GTK_CFLAGS])
AC_SUBST([GTK_LIBS])
My Makefile.am
is:
bin_PROGRAMS = secretary
secretary_SOURCES = secretary.c
轮到我的secretary.c
如下:
#include <gtk/gtk.h>
int main(int argc, char *argv[]) {
gtk_init(&argc, &argv);
GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_show(window);
gtk_main();
return 0;
}
然而,当我跑步时make
(当然,调用后./configure
)我收到这个错误:
gcc -DHAVE_CONFIG_H -I. -g -O2 -MT secretary.o -MD -MP -MF \
.deps/secretary.Tpo -c -o secretary.o secretary.c
secretary.c:1:21: fatal error: gtk/gtk.h: File or directory not found.
我缺少什么?为什么 autoconf 不将正确的标志传递给 gcc?
当你使用PKG_CHECK_MODULES
,您需要指定标志Makefile.am
。最简单的方法是将其添加到AM_LDFLAGS
and AM_CPPFLAGS
:
AM_LDADD = @GTK_LIBS@
AM_CPPFLAGS = @GTK_CFLAGS@
如果您想更具体,您可以添加:
secretary_LDADD = @GTK_LIBS@
secretary_CPPFLAGS = @GTK_CFLAGS@
不使用可能更容易PKG_CHECK_MODULES
完全并让用户通过通常的机制指定库的位置(分配LDFLAGS
或将库安装在标准位置)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)