Frage

Das vollkommen zufrieden mit altem Stil Makefiles, ich bin auf der Suche nach einer einfachen Alternative zu Libtool. Ich will nicht zu auto wechseln, und ich halte Probleme mit libtool laufen, wenn ich versuche, direkt, es zu benutzen. Die neueste sind ‚nicht unterstützte hard Eigenschaften‘, und ich bin immer mit dem Mangel an vollständiger Dokumentation satt das sagt mir nur, was falsch ist diesmal ...

Ich will nur ein paar .o Dateien mit den richtigen Flaggen kompilieren und verknüpfen sie in eine gemeinsame Bibliothek, so dass es auf so vielen Plattformen wie möglich funktioniert. Gibt es irgendetwas gibt, die nur das tut und mich nicht zwingen, alle meine anderen Werkzeuge zur gleichen Zeit zu wechseln?

War es hilfreich?

Lösung

Es gibt jlibtool (was nichts mit Java zu tun hat).

Es ist in C geschrieben und kann nur mit Ihrer Quelle gebündelt werden.

Es war ursprünglich ein Apache Projekt , aber wer auch immer es funktioniert es scheint es 2004 um aufgegeben

Es wurde von Freeradius Projektmaintainer Alan Dekok übernommen, die den Code modernisiert und einige nagenden Probleme behoben. Wir verwenden es für das Projekt Freeradius (> = 3.0.0) alle Kompilierzeit Verknüpfung zu tun.

Andere Tipps

ich nicht sicher, ob es passen würde info Ihren Workflow, aber ich würde empfehlen, sich unter CMake . Es funktioniert auf Windows, Linux und Mac und sollten Sie nicht alle Ihre anderen Tools ändern erzwingen. Sie werden allerdings müssen ihre Eignung beurteilen sich selbst.

Bei Ihrer Beschreibung in der Anmerkung zu Milliams' Antwort,

  

Ich will nur ein Werkzeug, dass ich sagen: „Gib mir den Compiler-Flags, so dass ich diese n-Dateien für die Verwendung in einer gemeinsam genutzten Bibliothek zusammenstellen kann, und mir dann die Befehle gibt sie miteinander zu verknüpfen“,

dann libtool kann auch das einfachste Werkzeug für den Job. Ich kenne keine andere Alternative.

Sie haben Recht, dass die Dokumentation für die Verwendung von libtool mit einfachen Makefiles praktisch nicht vorhanden ist, aber libtool sicherlich erfordert Sie nicht zu auto wechseln. Cross-Plattform-Bibliotheken sind schwierig, und der Preis, den man dafür zu zahlen hat, ist Libtool. (Oder vielleicht der Rabatt Preis ist libtool + auto + autoconf oder CMake oder Jam).

slibtool (dl.midipix.org/slibtool, git: //midipix.org/slibtool) ist ein libtool-Ersatz, geschrieben in C. Ein einzelner slibtool binäre Ziele für die nahtlose Unterstützung sowohl native als auch Quer baut, und das Programm bietet auch einige zusätzliche Funktionen (Installation von .la Dateien ist optional, optional farbcodierte Annotation, etc). Die folgende minimale Ebene Make-Datei zeigt, wie (Kreuz-) eine Bibliothek mit slibtool bauen.

CC      = cc
LIBTOOL = slibtool
DESTDIR = destdir

all:    libfoo.la

a.lo:
    $(LIBTOOL) --mode=compile --tag=CC $(CC) -c a.c

libfoo.la: a.lo
    $(LIBTOOL) --mode=link --tag=CC $(CC) -o libfoo.la -rpath /lib

install: all
    mkdir -p destdir
    $(LIBTOOL) --mode=install cp libfoo.la $(DESTDIR)

# the -rpath argument is required for semantic compatibility with libtool.

nativen build, default (beide gemeinsam benutzte Bibliothek und statische Bibliothek)

$ make
$ make install

nativer bauen, gemeinsam genutzte Bibliothek nur

$ make LIBTOOL=slibtool-shared
$ make install

nativer bauen, statische Bibliothek nur

$ make LIBTOOL=slibtool-static
$ make install

Cross-build, default

$ make CC=some-target-tuple-gcc
$ make install

Cross-build, standardmäßig mit vielen Farben

$ make LIBTOOL=dlibtool CC=some-target-tuple-gcc
$ make install
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top