Automake ist nicht für die Herstellung von Objekten entwickelt. Es wird entweder Programme oder Bibliotheken erstellen. Es ist schwierig, Ihre Frage zu beantworten, ohne zu wissen, warum Sie eine einzelne Objektdatei kompilieren möchten und nicht etwas anderes. Vielleicht gibt es eine sauberere Antwort auf Ihr "echtes" Problem.
A Makefile.am
Sie schreiben könnte, ist
noinst_LIBRARIES = libThread.a
libThread_a_SOURCES = Thread.cc Thread.h # No need to put headers in EXTRA_DIST
Die Makefile
resultierende libThread.a
enthält eine Bibliothek bauen würde nur libThread.o
, ans weil *.a
Bibliotheken nur eine Sammlung von Objekt sind Dateien gibt es keine Verknüpfung beteiligt ist. Die obige Makefile.am
bewirkt auch, dass die ausgegebene Makefile
Regeln enthält, um libThread.o
zu kompilieren, so dass Sie eine build:
Regel hinzufügen können, wenn Sie möchten.
Wenn Sie wirklich Automake- wollen diese Kompilierung Regel emittieren, aber die Bibliothek nicht bauen, könnten Sie gehen mit
EXTRA_LIBRARIES = libThread.a # EXTRA here means "output build rules but don't
# build unless something depends on it".
libThread_a_SOURCES = Thread.cc Thread.h
build: Thread.$(OBJEXT)
Jetzt sind Sie explizit die Datei benötigen Thread.$(OBJEXT)
nur gebaut werden, wenn Sie make build
geben, wie in Ihrem Original Makefile
.
(Automake- verwendet .$(OBJEXT)
statt .o
zu Erweiterungen wie .obj
in DOS-Varianten zu unterstützen.)
Dies war eine einfache Lösung für das Problem. Danke für den Hinweis. –