[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Re[2]: Automake - Problema molto concreto



Il gio, 2002-05-23 alle 17:38, Paolo Casciello ha scritto:
> Hello Federico,
> 
> giovedì, giovedì 23 maggio 2002, you wrote:
> 
> 
> FDG> domanda idiotissima, ma perche' non crei una libreria condivisa? oppure,
> FDG> se proprio vuoi linkare staticamente, crea una .a e poi, nel codice
> FDG> 'chiamante', usa dir/libmia.a come file extra durante il link.
> 
> ehehe si ho valutato bene sono giunto proprioa  fare cosi'.
> Ma il mio problema resta. :) Evidentemente non mi sono spiegato bene
> :D
> 
> allora. Ho la mia struttura fatta cosi'
> 
> ~
> |- src
> |  |- dir1
> |  |- dir2
> |  |  |- dir2.1
> ..
> 
> Ora avendo molti file vorrei che ci fosse un makefile in ogni subdir
> che richiama i makefiles delle subdir e poi builda gli object della
> sua dir.
> Cosicche' poi il makefile all top della dir crea la libreria .a
> linkando tutta la roba buildata nele sottodir.
> 
> Il mio problema e' solo (e sicuramente sara' una stupidata.. ma non
> trovo proprio documentazione che lo spieghi :((((( ) fare dei
> Makefile.am che mi creino SOLO i .o per la dir in cui sono dentro!
> 
> E' questo che non riesco a fare :(
> 
> Riesco a fare il makefile generale che me li fa tutti e li builda.. ma
> non riesco a spezzettarlo. non so cosa scrivere nei makefile secondari
> per fargli fare solo le .o in quanto nei makefile ci puo' andare solo
> xxx_PROGRAMS e xxx_LIBREARIES ed entrambi puntano a buildare :(

ed infatti non e' sensato riempire delle dir di .o e basta. comunque,
puoi generare delle librerie e poi usarle per linkare staticamente,
l'effetto e' lo stesso. nella top level directory metti:

SUBDIRS = dir1 dir2

bin_PROGRAMS = foo

foo_SOURCES = foo.c bar.c
foo_LDFLAGS = dir1/libcirp.la dir2/libciorp.la

e poi, per esempio, in dir2 metti:

noinst_LTLIBRARIES = libciorp.la

libciorp_la_SOURCES = buzz.c ciorp.c

in questo caso compileresti dinamicamente, ma puoi anche scegliere di
compilare staticamente. comunque e' tutto spiegato nel manuale di
automake (segue esempio di libreria statica):

noinst_LIBRARIES = libciorp.a

libciorp_a_SOURCES = buzz.c ciorp.c

-- 
Federico Di Gregorio
Debian GNU/Linux Developer & Italian Press Contact        fog@debian.org
INIT.D Developer                                           fog@initd.org
  99.99999999999999999999% still isn't 100% but sometimes suffice. -- Me

Attachment: signature.asc
Description: PGP signature


Reply to: