Make und Autoconf: Das GNU-Buildsystem
Wichtigster Kritikpunkt an Make ist aber, dass sich damit keine portablen, über mehrere Betriebssysteme hinweg gültigen Builddefinitionen schreiben lassen. Zu unterschiedlich sind Konventionen, Pfade, Shells, Compiler und so weiter auf den verschiedenen Plattformen. Hier kommen die Buildsysteme ins Spiel. Sie erzeugen aus abstrakteren Definitionen Plattform- und Tool-spezifische Makefiles. Bekanntestes Beispiel ist das GNU-Buildsystem (GBS) mit den Tools Autoconf und Automake.
Es gibt kaum einen Linux-Anwender, der nicht früher oder später den klassischen Dreischritt »configure; make; make install«
aufruft. Er erzeugt dabei mit Autoconf das von ihm dann mit dem Quellcode ausgelieferte Configureskript. Dieses wiederum überprüft die Plattform des Anwenders und erzeugt daraus die eigentlichen Makefiles.
Das GBS ist fast omnipräsent, aber wichtige Projekte haben sich davon abgewandt. So verwendet das KDE-Projekt inzwischen Cmake [1]. Dafür gibt es mehrere Gründe. Ein Problem von Autoconf ist es, dass es die plattformspezifischen Prüfungen über so genannte M4-Makros definiert. M4 ist ein leistungsstarker, aber altertümlicher Textprozessor mit einer schwierigen Low-Level-Syntax. Damit ist einerseits die Einstiegshürde groß, andererseits die Pflege aufwändig.
Ein weiterer Kritikpunkt am GBS liegt im Mechanismus selbst begründet. Das Configureskript untersucht die aktuelle Plattform und baut dafür ein passendes Makefile. Cross-Compilation, für Embedded Devices eine Standardanforderung, ist damit prinzipbedingt schwierig bis unmöglich.
Zu guter Letzt unterstützt das GBS (verständlicherweise) nur GNU-Make als Buildtool. Cmake dagegen kann aus seinen Definitionen heraus Make-Beschreibungen für verschiedenste Tools erstellen. Die Liste ist lang, es unterstützt unter anderem Borland und Watcom Make sowie Microsofts Nmake. Neben Makefiles erzeugt Cmake auch noch Projektdateien für Eclipse CDT, Microsoft Visual Studio und Kdevelop.
Eine weitere Alternative zum GBS ist Trolltechs Qmake [2]. Doch die Namen täuschen, Cmake und Qmake sind keine Make-Alternativen, sondern beide Makefile-Generatoren.
Das Bessere ist des Guten Feind
Natürlich gibt es nicht nur Kritik an Make, sondern auch Anstrengungen, es durch eine bessere Alternative zu ersetzen. Abbildung 2 zeigt die Einträge im Softwareverzeichnis der Free Software Foundation [3]. Die Liste ist aber nicht vollständig, [4] hat noch weitere Links, und auch die Suche über die Softwarekategorien bei Sourceforge findet viele weitere Treffer.
Bei der großen Auswahl sollte jeder etwas nach seinem Geschmack finden. Neben dem populären Ant (siehe weiter unten) sei insbesondere auf Scons [5] verwiesen. Scons ist in Python implementiert und verwendet Python-Syntax für die Formulierung der Buildregeln. Sein Vorgänger ist Cons [6], dessen Regeln an Perl angelehnt sind. Scons gilt als leistungsstark und einfach erweiterbar, aber auch als langsam.
Bei allen Alternativen muss der Entwickler aber beachten, dass ein einfacheres Buildtool als Make die Arbeit für ihn selbst erleichtern mag, aber für die Nutzer seiner Software eine Einstiegshürde aufstellt. Wer erst ein esoterisches Maketool herunterladen und bauen muss, um damit die eigentliche Software zusammenzustellen, greift dann doch eher zu einer alternativen Software. Unabhängig von dieser Erwägung haben sich in speziellen Ökosystemen eigene Buildtool-Standards durchgesetzt. Prominentestes Beispiel dafür ist Java.
Diesen Artikel als PDF kaufen
Express-Kauf als PDF
Umfang: 7 Heftseiten
Preis € 0,99
(inkl. 19% MwSt.)
Als digitales Abo
Weitere Produkte im Medialinx Shop »
Versandartikel
Onlineartikel
Alle Rezensionen aus dem Linux-Magazin
- Buecher/07 Bücher über 3-D-Programmierung sowie die Sprache Dart
- Buecher/06 Bücher über Map-Reduce und über die Sprache Erlang
- Buecher/05 Bücher über Scala und über Suchmaschinen-Optimierung
- Buecher/04 Bücher über Metasploit sowie über Erlang/OTP
- Buecher/03 Bücher über die LPI-Level-2-Zertifizierung
- Buecher/02 Bücher über Node.js und über nebenläufige Programmierung
- Buecher/01 Bücher über Linux-HA sowie über PHP-Webprogrammierung
- Buecher/12 Bücher über HTML-5-Apps sowie Computer Vision mit Python
- Buecher/11 Bücher über Statistik sowie über C++-Metaprogrammierung
- Buecher/10 Bücher zu PHP-Webbots sowie zur Emacs-Programmierung
Insecurity Bulletin
Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...





