2009-02-01 9 views
5

Ich habe ein ziemlich großes Programm in C geschrieben. Es umfasst mehrere Dateien und hat ein wenig Umrüstung, um Plattformprobleme zu kompensieren versuchen. Insbesondere habe ich Header-Dateien für verschiedene Betriebssysteme, Architekturen und Compiler, die Makros definieren, die verwendet werden, um Dinge zu handhaben. Zum Beispiel gibt das Flag -v Versionsinformationen aus, einschließlich des Namens des Compilers, der es erstellt hat, sowie des Betriebssystems und der Architektur, auf der es erstellt wurde. Als ein Beispiel dafür, warum es wichtig ist, kann das Programm eine C-Code-Datei erstellen und, wenn Sie möchten, es kompilieren - eine Aufgabe, für die es einfach einen Systemaufruf zu jedem Compiler es erstellt mit erstellt wird.Wie konfiguriere ich ein großes Programm für GNU Autotools

Es hat auch Unterstützung für die GNU Readline-Bibliothek (oder die BSD Editline Bibliothek - elbe ist), wenn es auf Ihrem System sowie ein äquivalentes ohne all die netten Readline-Funktionen gefunden wird, die ANSI rein ist, wenn Sie don‘ Ich habe es.

Die Quintessenz ist, ich kann keine der plattformabhängigen Bits herausnehmen, da einige Funktionen ziemlich stark davon abhängen, was OS/Architektur/Compiler Sie haben. Ich möchte auch denen, die sie haben, gute Funktionalität bieten. Und ich möchte, dass die Leute es mit einer standardmäßigen ./configure, make und make install Schnittstelle herunterladen und installieren.

Momentan benutze ich ein leidliches handgemachtes Shell-Skript für configure, das das Makefile von Grund auf neu erstellt und bestimmt, welche Headerdateien basierend auf Ihrem Betriebssystem/Ihrer Architektur/Ihrem Compiler eingeschlossen werden sollen. Ich hätte gerne einen effizienteren Ansatz, und ich würde gerne ein Standard-Build-System mit GNU Autotools verwenden. Auf diese Weise weiß ich, dass das, was ich mache, auf dem Computer eines anderen Computers funktioniert, ohne dass ich es auf dem Computer testen muss.

Meine Frage, für diejenigen von euch, die sich durch all das hindurchgeschlagen haben (Danke!), Ist: 1) Wie gehe ich von einem homebrew Build-System zu GNU Autotools? 2) Welche guten Tutorials gibt es, um mit den GNU Autotools zu beginnen? 3) Wie kann ich dies zu einem relativ schmerzlosen Prozess machen?

Antwort

8

Als Erstes können Sie Autoscan im Stammverzeichnis des Projekts ausführen. Es wird die Projektbaumstruktur gescannt und configure.scan generiert, während versucht wird, nicht portable Funktionen zu erkennen. Dann benennen Sie es in configure.ac um, bearbeiten Sie es entsprechend und schreiben Sie Makefile.am Dateien.

Ich schlage vor, dass Sie diesen Prozess (speziell Autoscan) in der GNU Autotools Handbuch für die Details nachschlagen. Es wird Ihren Aufwand verringern, aber zumindest werden Sie nicht bei der Erstellung dieser Dateien von vorne anfangen.

1

Dieser Link ist, nach dem ich nach dem Lesen dieses Beitrags googelte. Es beantwortete meine Fragen zum Erstellen der ./configure-Datei.

The GNU Build System

Verwandte Themen