Ho un Makefile.am che sarà responsabile per la costruzione di un binario di applicazione finale:Come faccio a specificare in uno script Makefile.am che voglio solo compilare oggetti .o file che possono essere successivamente collegati?
progetto/src/Makefile.am
anche nella directory src è un sotto-directory chiamata ctrnn che contiene un ulteriore Makefile.am:
progetto/src/ctrnn/Makefile.am
Ora, ctrnn/Makefile.am dovrebbe generare solo oggetto .o file con l'idea è che il livello superiore Makefile.am dovrebbe utilizzare il file oggetto generati nella sottodirectory ctrnn per costruire il binario.
Questa è la ctrnn/Makefile.am
SOURCES = network.cpp\
neuron.cpp
AM_CPPFLAGS= @[email protected]
Sulla base di questo file Makefile.am, voglio finire con network.o e neuron.o. Sto generare il Makefile secondo utilizzando automake ecc, ma quando provo e poi eseguire il file marca, ma non fa nulla e si limita a dire:
marca: Niente da fare per `tutti'
I so perché questo è, ho bisogno di specificare l'obiettivo di costruzione. Ma come faccio a farlo nello script ctrnn/Makefile.am dato che non voglio creare un binario che richieda bin_PROGRAMS ma i file oggetto reali network.o e neuron.o?
(Nota se si specifica un nome bin_PROGRAMS, giustamente finisce per lamentarsi di un riferimento non definito al main).
Cosa faccio di sbagliato?
Grazie, Ben.
Grazie! Ho finito per usare il metodo libtool, funziona perfettamente :-) –
Grazie per avermi aiutato a sforzarmi nell'inferno autotools/libtool. E facciamo un favore a tutti noi: vivete a lungo e prosperate! – rockdaboot
foo_LDADD? Non dovrebbe essere foo_LIBADD –