使用autotools =“glib.h”构建Vala项目

时间:2011-09-08 15:57:27

标签: autotools vala

我正在尝试创建我的第一个vala和第一个支持autotools的项目。在线跟踪教程之后,一切都确实有效,但是当gcc编译器开始编译我的程序时,我得到错误“glib.h not found”。

首先,不能只是autotools使用valac作为编译器而不是创建.c文件,然后运行gcc? (因为运行valac直接工作正常)

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

configure.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

Makefile.am在./src /:

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

谢谢!

1 个答案:

答案 0 :(得分:4)

正如你所说,autotools只运行valac -C然后运行gcc。这实际上是一件好事,因为一切都和C一样。任何你可以找到的autotools文档(包括受挫的邮件列表和堆栈溢出帖子)都适用,所以通过谷歌搜索问题很容易找到答案。 / p>

在您的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/中有一个库,所以它相当完整。