2009-11-27 9 views
6

Ich schreibe meine eigene Komponententestbibliothek (mit autoconf, automake und libtool), um meinen Bedürfnissen besser zu entsprechen (ich brauche keine übergroße Menge an Funktionen, nur einen Testläufer und Behauptungen). Ich bin an den Punkt gekommen, wo es brauchbar scheint.Autoconf - Wohin geht config.h?

Natürlich verwendet es eine config.h, um herauszufinden, welche Header enthalten sein sollen. Das Problem ist, dass ich nicht sicher bin, wo config.h gehen sollte, da es dazu neigt, leicht mit config.h des anderen Projekts zu kollidieren, ebenso wie die Tatsache, dass es architekturabhängig ist.

Was sollte meine Methode für die Installation dieses Headers sein? (Es wird von allen anderen Headern benötigt)

+6

Die Methode zur Installation von config.h sollte die gleiche wie Ihre Methode zur Zerstörung Ihres Dateisystems sein. Sie können Säure auf die Festplatte gießen oder die Maschine an einem 90-stöckigen Gebäude abstellen oder in einen See fallen lassen. Aber eine bessere Wahl ist, es nicht zu tun. Config.h sollte nur im Build-Verzeichnis verwendet werden, wenn Sie Ihr Projekt kompilieren. Es sollte nicht installiert werden. –

Antwort

5

Das ax_prefix_config_h Makro klingt wie, was Sie wollen. Es bietet eine Möglichkeit, eine andere config.h-ähnliche Datei zu erstellen, die die config.h-Information als Präfix enthält. Also, anstelle von #define HAVE_SOMETHING in config.h erhalten Sie #define MYLIB_HAVE_SOMETHING in mylib_config.h. Ziemlich praktisch.

+0

Brilliant! Vielen Dank. – alternative

0

Sie können eine andere Konfigurationsdatei ausgeben, indem Sie das AC_OUTPUT-Makro ändern, obwohl ich nicht sicher bin, wie Ihr Projekt in andere Projekte integriert werden soll. Wenn es sich um ein Unterprojekt handelt, befindet es sich sowieso in einem Unterverzeichnis.

2

Sie sollten config.h in der Bibliotheksschnittstelle sowieso nicht exportieren.

This link zeigt eine Methode, um zu umgehen, wenn Ihre installierten Header wirklich, Plattform abhängig sein müssen. Es ist jedoch eine fragile Methode, die ein veraltetes autoconf-Makro verwendet.