Automake n'est pas conçu pour produire un objet. Il va construire des programmes ou des bibliothèques. Il est difficile de répondre à votre question sans savoir pourquoi vous voudriez compiler un seul fichier objet et pas autre chose. Peut-être qu'il y a une réponse plus claire à votre "vrai" problème.
Un Makefile.am
vous pourriez écrire est
noinst_LIBRARIES = libThread.a
libThread_a_SOURCES = Thread.cc Thread.h # No need to put headers in EXTRA_DIST
Le résultat Makefile
construirait une bibliothèque libThread.a
ne contenant que libThread.o
, parce que *.a
ans les bibliothèques sont juste une collection de fichiers objet, il n'y a pas de lien en cause. Le Makefile.am
ci-dessus provoque également l'Makefile
émis contenir des règles pour compiler libThread.o
, de sorte que vous pouvez ajouter une règle build:
si vous le souhaitez.
Si vous voulez vraiment Automake émette cette règle de compilation, mais pas construire la bibliothèque, vous pouvez aller avec
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)
Maintenant, vous exigent explicitement le fichier Thread.$(OBJEXT)
à construire que lorsque vous tapez make build
, comme dans votre original Makefile
.
(Automake utilise .$(OBJEXT)
plutôt que .o
pour soutenir des extensions comme .obj
dans des variantes DOS.)
Ce fut une solution simple au problème. Merci pour le conseil. –