2010年10月8日 星期五

使用 GNU Build System (aka Autotools) 來管理 Vala 編譯流程

首先要先安裝好需要的軟體套件

以 Ubuntu 10.04 為例
$ sudo apt-get install autoconf automake pkg-config valac vim

Ubuntu 10.04 上面的 Vim 並沒有提供 Vala 的語法著色
還好官方網站上面已經有提供了 Vala/Vim
照著做一遍就好了

準備一個的 hello world 原始碼檔案 hello.vala
void main() {
    stdout.printf("Hello world\n");
}

接者寫一個 Makefile.am
bin_PROGRAMS = hello
hello_SOURCES = hello.vala
hello_CPPFLAGS = @GLIB_CFLAGS@
hello_LDFLAGS = @GLIB_LIBS@

然後將 autoscan 產生出來的 configure.scan 更名為 configure.ac
$ autoscan
$ mv configure.scan configure.ac

再修改成下面這樣
#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ(2.65)
AC_INIT([hello],[0.0],[foo@bar.com])

AM_INIT_AUTOMAKE([-Wall -Werror foreign])

# Checks for programs.
AC_PROG_CC
AM_PROG_VALAC([0.8.0])

# Checks for libraries.
AM_PATH_GLIB_2_0(,,,[gobject])                                  

# Checks for header files.

# Checks for typedefs, structures, and compiler characteristics.

# Checks for library functions.

AC_CONFIG_FILES([Makefile])
AC_OUTPUT

第 7 行的
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
會產生一些處理 Makefile.am 的工具出來

第 10 行的
AC_PROG_CC
會檢查 C Compiler 因為 Vala 最終還是會產生 C 的原始檔案

第 11 行的
AM_PROG_VALAC([0.8.0])
當然就是檢查這篇文章的主角 Vala 囉

第 14 行的
AM_PATH_GLIB_2_0(,,,[gobject])
會產生出在 Makefile.am 所使用的 @GLIB_CFLAGS@ 跟 @GLIB_LIBS@
還有會使用到 glib 裡面的 gobject 這個 module

接下來就如同一般的 GNU Build System (aka Autotools) 的慣用方法
使用以下命令來產生 configure 腳本檔案
$ autoreconf -if

然後就是 ./configure && make && make install 這類常見的指令連續技囉~ :P
張貼留言