autoconf'u daha iyi anlayabilmek için automake aşamasını atlayacağız.
autoconf, configure.in dosyası inceleyerek, orada tanımlanan işleri yapabilecek configure scriptini yaratır. configure scripti ise configure.inde belirlediğiniz, uzantısı .in olan giriş dosyalarını inceleyerek @degisken@ biçimde olan ifadeleri eğer tanımlanmışsa değerleri ile değiştirir. Çıkış dosyasından .in uzantısı kaldırılır.
-- configure.in --
...
...
program_klasoru="/usr/local/deneme"
AC_SUBST(program_klasoru)
AC_OUTPUT[deneme.h]
------------------
-- deneme.h.in --
#define KLASOR @program_klasoru@
-----------------
# autoconf
# ./configure
...
...
...
--- deneme.h ---
#define KLASOR "/usr/local/deneme"
----------------
Yukarıda autoconf ve configure'ün çalışma prensibine basit bir örneğe yer verdik. Burada AC_ ile başlayan makrolardan Kısım 4.2 de bahsedilecektir.
Daha geniş kapsamlı bir örnek;
--- deneme.c ---
#include <stdio.h>
#include "config.h"
int main(int argc, char **argv) {
printf("Bu programin sürümü %s\n", SURUM);
return 0;
}
----------------
--- config.h.in ---
#define SURUM @surum@
-------------------
--- configure.in ---
AC_INIT(deneme.c)
dnl C derleyicisini bul ve test et
AC_PROG_CC
AC_LANG_C
dnl surum degiskenini tanimla ve giris dosyalarinda incelenmek uzere gerekenleri yap
surum="0.1"
AC_SUBST(surum)
dnl Makefile.in dosyasını oku ve Makefile'i yarat
dnl config.h.in dosyasını oku ve config.h'i yarat
AC_OUTPUT([
Makefile
config.h
])
--------------------
--- Makefile.in ---
CC = @CC@
CFLAGS = @CFLAGS@
all: deneme-bin
deneme-bin: deneme.c
$(CC) $(CFLAGS) deneme.c -o deneme
clean:
rm -f deneme
distclean:
rm -f config.h Makefile
-------------------
Yukarıdaki mini projeyi aşama aşama uygulayalım:
# ls
Makefile.in config.h.in configure.in deneme.c
# autoconf
# ./configure
...
...
# ls
Makefile Makefile.in config.h config.h.in configure.in deneme.c
# make
...
...
# ls
Makefile Makefile.in config.h config.h.in configure.in deneme deneme.c
İlk başlangıçta autoconf çalıştırılarak, configure.in dosyasından configure scripti oluşturuluyor. configure scripti ile Makefile.in ve config.h.in dosyalarının içerisinde @...@ biçiminde yeralan ifadelerin değerleri yerine konuluyor ve Makefile ve config.h oluşturuluyor. make komutu ile derleme işlemi gerçekleştiriliyor.