Nachfolgend wird ein Beispiel etwas detaillierter vorgestellt. Das Paket (hellotest-XX.XX.tar.gz) kann von der Website www.philosys.de/news/ heruntergeladen werden. Es ist ein reguläres Paket im GNU-Stil und kann – außer der Notwendigkeit, einen Cross-Compiler auf dem eigenen Entwicklungs- Host aufzusetzen – so genutzt werden, wie es ist (siehe auch die Datei „Readme“.)
Das Makefile.am im Hauptverzeichnis des Pakets besteht aus den Zeilen
SUBDIRS = src lib tests
test: check
Der Test-Code (/tests directory) ist getrennt vom eigentlichen Code (/src und /lib). Normalerweise ist check das von den GNU autotools bereitgestellte Target. Bequemerweise kann test als ein Alias definiert werden. Den Inhalt der configure. ac zeigt Listing 1. Die meisten Code-Zeilen in configure.ac sorgen dafür, dass alles an seinem richtigen Platz ist. Diese Information wird später in Makefiles genutzt, um die entsprechenden Header-Dateien, abhängige Bibliotheken und weiteres zu finden. Die letzte Definition von AC_ OUTPUT spezifiziert, welche Makefiles erzeugt werden sollen. Der Inhalt dieser Makefiles ist recht simpel. Der Makefile.am im Verzeichnis /src lautet:
bin_PROGRAMS = hellotest
hellotest_SOURCES = hello.c main.c
noinst_HEADERS = hello.h
Und lib/Makefile.am:
lib_LTLIBRARIES = libhellotest.la
libhellotest_la_SOURCES = hellotest.c
include_HEADERS = hellotest.h
AC_PREREQ(2.59e) # Checks for programs. # Checks for libraries. # Checks for header files. # Checks for typedefs, structures, and compiler characteristics. AC_MSG_CHECKING(to see if we can add ‘-Wall -W’ to CFLAGS) else CFLAGS=“-D_U_=\“\“ $CFLAGS“ fi # Checks for library functions. AC_OUTPUT([Makefile |
Listing 1. Die meisten Code-Zeilen der Datei configure.ac listen auf, welches Element in welchem Verzeichnis zu finden ist. Am Ende spezifiziert die Definition von AC_OUTPUT, welche Makefiles erzeugt werden sollen. |