[TiLUG] copiare un albero di directory con un makefile

Luigi Panzeri aka Matley matley@muppetslab.org
Gio 13 Mar 2008 12:41:13 CET


vroby <vroby.mail@gmail.com> writes:

> ciao a tutti
> ho un problema con make
> siccome devo fare installare un payload piuttosto complesso mi 
> piacerebbe farlo fare in modo automatico.
> per copiare il contenuto di una singola directory uso
>
>         for files in ../../../share/sdlBasic/*.properties 
> ../../../share/sdlBasic/*.api; \
>         do \
>             $(INSTALL) -m 644 $$files $(SYSCONF_PATH); \
>         done
>

niente for, usa find

        find ../../../share/sdlBasic/ -iname \*.properties -or -iname \*.api -type f -exec $(INSTALL) -m 644 \{\} $(SYSCONF_PATH) \;

è possibile che alcuni escape che abbia inserito siano superflui o addirittura errati. Verifica

>
> il problema si pone se in questa directory ci sono altre sotto directory.
> Potrei in effetti usare un cp -R ma nel makefile non credo sia permessa 
> una sintassi simile

si, puoi metterci quello che ci vuoi. I comandi che metti in un
makefile (preceduti da un tab) saranno interpretati dalla shell (a
parte un minimo di comandi specifici del makefile e la sostituzione
delle variabili).

> chiedo quindi suggerimenti e un buon manuale avanzato sui makefile visto 
> che sono decisamente poco pratico di questo aspetto
> della programmazione.
>

La documentazione ufficiale é buona:
http://www.gnu.org/software/make/manual/make.html

ma se i tuoi makefile diventano complessi, ti suggerisco di usare
automake/autoconf (anche detti autotools). Automake è uno strumento
che genera automaticamente file Makefile.in da file Makefile.am.
autoconf poi trasforma il Makefile.in in Makefile. Sembra un casino ma
1) non lo è; 2) è il modo standard di fare i pacchetti, e risolve un
sacco di problemi con i quali prima o poi ti scontri (tra cui quello
precedente).

apt-get install autotools

e l'ottimo libercolo pieno di esempi:

apt-get install autobook

-- 
Luigi Panzeri aka Matley

Why Lisp? http://alu.cliki.net/RtL%20Highlight%20Film
Quotes on Lisp: http://lispers.org/


Maggiori informazioni sulla lista TiLUG