2

我正在尝试创建我的第一个 vala 和第一个支持 autotools 的项目。遵循在线教程后一切正常,但是当 gcc 编译器开始编译我的程序时,我收到错误“glib.h not found”。

首先,不能只是 autotools 使用 valac 作为编译器而不是创建 .c 文件然后运行 ​​gcc 吗?(因为直接运行 valac 可以完美运行)

如果我不能将 autotools 配置为只运行 valac 而不是 valac -c 然后 gcc,我将如何解决这个问题?

配置.ac:

AC_PREREQ([2.68])
AC_INIT([Scraps], [0.1], [Scraps])
AM_INIT_AUTOMAKE
AM_CONFIG_HEADER([config.h])
AC_PROG_CC
AM_PROG_VALAC
AC_CONFIG_FILES([Makefile
                 src/Makefile])
AC_OUTPUT

./src/ 中的 Makefile.am:

scrapsdir=../
scraps_PROGRAMS=scraps
scraps_SOURCES=main.vala

谢谢!

4

1 回答 1

4

正如你所说,autotools 只是运行 valac -C 然后运行 ​​gcc。这实际上是一件好事,因为一切都与 C 相同。您可以找到的任何自动工具文档(包括沮丧的邮件列表和堆栈溢出帖子)都适用,因此只需通过谷歌搜索问题就很容易找到任何问题的答案。

在您的 configure.ac 中,您需要以下内容:

PKG_CHECK_MODULES(GLIB, glib-2.0 gobject-2.0)
AC_SUBST(GLIB_LIBS)
AC_SUBST(GLIB_CFLAGS)

然后在你的 Makefile.am 中,类似:

scraps_LDFLAGS = $(GLIB_LIBS)
scraps_CFLAGS = $(GLIB_CFLAGS)

您可以使用http://gitorious.org/sqlheavy作为示例。examples/和中有可执行文件, 中有utils/一个库sqlheavy/,所以它相当完整。

于 2011-09-08T17:15:36.723 回答