![]() | Makefile.am für Shared Libraries |
| Zurück | Das Makefile.am Howto | Weiter |
Dies ist ein Beispiel Makefile.am für eine Shared Library.
AM_CPPFLAGS = $(all_includes) lib_LTLIBRARIES = libkonq.la libkonq_la_LIBADD = $(LIB_KPARTS) libkonq_la_LDFLAGS = $(all_libraries) -version-info 6:0:2 -no-undefined libkonq_la_SOURCES = popupmenu.cc knewmenu.cpp ... METASOURCES = AUTO
Das lib_prefix bedeutet, dass die Bibliothek in lib/ installiert wird. Dann kommt der Name der Bibliothek, immer mit der Endung .la. Beachte, wie dieses immer zu _la in den Zeilen wird, die dieses referenzieren.
bedeutet "LibTool libraries", d.h. es fordert libtool auf, sie zu behandeln. Du solltest das immer für Bibliotheken verwenden.
Hier definierst Du die Liste der Bibliotheken von denen Deine Bibliothek abhängt. Beachte, dass es für Bibliotheken *_LIBADD heißt, anders als bei Programmen, die *_LDADD verwenden. Das ist nicht das selbe (eine Bibliothek erinnert sich nur daran, von welchen Bibliotheken sie abhängt, sie wird nicht verlinkt wie ein ausführbares Programm). Für die Reihenfolge der Abhängigkeiten sieh weiter oben unter *_LDADD bei ausführbaren Programmen.
Beinhaltet die Flags, die an den Linker übergeben werden müssen. $(all_libraries) beinhaltet wie üblich die -L Flags, die nötig sind, um QT und KDE zu finden. Bei Bibliotheken kann hier außerdem die Versionsnummer der Bibliothek angegeben werden (für genauere Informationen siehe info libtool unter Versionierung / Libtool Versionierung). Es wird besonders empfohlen, -no-undefined zu setzen: Dies erlaubt, zur Linkzeit zu prüfen, das die Bibliothek keine undefinierten Symbole hat. Wenn irgendwelche undefinierten Symbole auftauchen, bedeutet das entweder, Du hast vergessen, eine Methode zu implementieren, oder eine benötigte Bibliothek fehlt in der LIBADD Zeile. Der Rest ist vergleichbar zum gleichen Abschnitt über ausführbare Programme
| Zurück | Zum Anfang | Weiter |
| Das Makefile.am Howto | Nach oben | Makefile.am für ein Plugin / Modul |