2009-06-11 7 views
1

Ich habe in den letzten paar Tagen mit Autotools herum tooling, und haben schließlich erhebliche Fortschritte gemacht. Ein Problem, das ich habe, ist, dass ich zwei Bibliotheken habe, die vor dem Hauptanwendungscode kompiliert werden müssen. Ich bin mir nicht sicher, wie ich das machen soll. Meine Verzeichnisstruktur ist unten und ein Ausschnitt von meinem configure.ac auch.Autoconf Kompilierung der Abhängigkeit vor der Anwendung

AC_CONFIG_FILES([Makefile 
     src/Makefile 
     gtkworkbook/Makefile 
     csv/Makefile]) 
AC_OUTPUT 

Ich brauche die csv/Makefile und gtkworkbook/Makefile sowohl vor src/Makefile zusammengestellt werden; Gibt es eine Möglichkeit, dies zu spezifizieren? Im Moment bekomme ich einen Fehler bezüglich der Bibliothek (csv), die während des Kompilierens der Anwendung nicht existiert.

Antwort

4

Die Reihenfolge der Elemente in AC_CONFIG_FILES() hat keinen Einfluss auf die Erstellungsreihenfolge. Wenn Sie automake verwenden, von dem ich annehme, dass Sie sind, durchläuft es Ihren Verzeichnisbaum in der Reihenfolge, in der Sie Verzeichnisse in der Makrile.am-Liste SUBDIRS auflisten.

Das gesagt, sollten Sie die Reihenfolge der Elemente in AC_CONFIG_FILES() spiegeln die Build-Reihenfolge, für die Konsistenz/Wartbarkeit.

Beispiel dafür, wie Ihr Toplevel Makefile.am der SUBDIRS in der gewünschten Reihenfolge zu bauen:

SUBDIRS = csv gtkworkbook src 

Auch für diesen einfachen Fall, dass Sie beide AC_CONFIG_FILES nicht brauchen() und AC_OUTPUT().

AC_OUTPUT([ 
    Makefile 
    src/Makefile 
    gtkworkbook/Makefile 
    csv/Makefile 
]) 
+0

dh Sie brauchen SUBDIRS = csv gtkworkbook src (ja, ich tippte eine Antwort als anthony seine tat!) – dajobe

+0

ich das tat, aber es funktioniert nicht: Sie können Ihre Liste Verzeichnis AC_OUTPUT() übergeben scheint zu funktionieren. Makefile.am im obersten Verzeichnis hat dieselben Unterverzeichnisse, und auch AC_OUTPUT wurde geändert. Irgendwelche Vorschläge? –

+0

Sind Sie sicher, dass die Änderungen Ihrer Makefile.am in Ihr Makefile übernommen wurden? GNU versucht, dies automatisch für Fälle zu tun, die es erkennen kann, aber manchmal ist nach der Bearbeitung von configure.in eine Regenerierung erforderlich. Führen Sie Ihr Autogen-Skript erneut aus. – anthony