GNU Autotools: Wie sind Sie Quelldateien im ‚make dist‘ Tarball, die oberhalb der Wurzel Quellverzeichnis sind?

StackOverflow https://stackoverflow.com/questions/1836209

Frage

Ich habe ein Subversion-Projekt bekam die Gnu Autotools verwendet (das heißt, auto, autoconf und libtool) Quellcode in einem Unterordner (so genannte ‚subpackage‘) zu verwalten. Die subpackage Referenzen Quelldateien, die über dem subpackage Root-Quellverzeichnis sind, und sind gemeinsam mit anderem Subpackages. Leider beim Laufen ‚make dist‘ die Verteilung Tarball zu schaffen, haben die gemeinsame Quelldateien nicht in der Distribution enthalten bekommen.

Gibt es eine Möglichkeit autoconf / auto zu verwenden, um diese gemeinsame Quelldateien in ein Unterverzeichnis des subpackage zu bewegen, bevor die Quelle zu verteilen, und die Make-Datei zu haben, mich anzupassen korrekt auf die umgesiedelt Quelldateien zeigen? Natürlich wäre es möglich, die Make-Datei zu haben, diese Quelldateien über vor dem Kompilieren zu bewegen, aber für in Subversion-Repository arbeiten, dies führt zu Problemen, da diese verschobenen Dateien unveränderbar sind, und seine leicht versehentlich die verschobene Datei anstelle den ursprünglichen bearbeiten .

War es hilfreich?

Lösung

Statt Dateien um zu bewegen (was immer faul klingt für mich), Warum nicht symbolische Links verwenden? Sie könnten Ihre subpackage Referenz nur lokale Dateien haben, und eine Makefile Regel besagt, dass „wenn die lokalen Dateien nicht hier sind, eine symbolische Verknüpfung zu der Datei Mutter erstellen“. Während make dist wird die symbolische Verbindung in eine einfache Datei automatisch konvertiert werden.

Andere Tipps

Sie können ein leeres Verzeichnis in subpackage haben, genannt, sagen wir, „gemeinsam“ mit einem Make-Datei, die kopiert die externen Dateien in. Dann könnten Sie die dist-Haken Ziel verwenden, um die Dateien direkt in die Version des "zu bewegen gemeinsames“Verzeichnis, das bis in den Tarball Reißverschluss wird erhalten. Auf diese Weise müssen Sie keine Sorge über sie herumliegen und bearbeitet wird. Sie würde auch die Makefile.am, Makefile.in und Makefile in „common“ überschreibt, wie Sie kopiert.

Beispiel in subpackage / common / Makefile.am (ungetesteten):

dist-hook:
    cp -p $(top_srcdir)/../common/Makefile* $(top_srcdir)/../common/*.[ch] $(distdir)

Ich bin nicht 100% sicher, dass dies allerdings funktioniert. Es könnte den Rest des Pakets brechen, je nachdem, wo alles andere erwartet, dass diese Quelldateien zu finden; es wird brechen wahrscheinlich dist machen, wenn Sie den Tarball auspacken und versuchen dist von dort zu machen. Sie sollten wissen, dass diese Art von Betrug verpönt ist. Aber ich hoffe, ich habe Ihnen genug Ideen gegeben zu spielen, um mit.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top