Newsgroup: it.comp.os.linux.development
Titolo: makefile, file .h e simboli

Ciao All,
Ho piu' o meno capito come si crea un makefile, e in tutti i makefile che ho
visto ci sono le rules per creare i .o da .c .cc o quello che e' e il file
target dipende dai file .o che lo compongono e in caso dalle librerie che deve
linkare.
Quello che pero' mi chiedo e': se io cambio un file .h incluso da un .cc che fa
parte del "progetto" il make vedendo che il .o corrispondente ha lo strsso
timestamp del .cc non lo ricompila, ma in realta' credo dovrebbe ricompilarlo
perche' ad esempio in c++ capita di modificare solo il .h che contiene pero'
anche l'implementazione di alcune funzioni inline. Riassumendo: come faccio a
dire al make di ricompilare pippo.cc quando viene modificato o pippo.cc o
pippo.h?
Altra cosa: sto usando le librerie cgicc e mysql++ e entrambi creano anche
delle librerie dinamiche e sto usando quelle. Mi ha lasciato pero' di sasso la
compilazione di mysql++ :) : da una dir che sara' stata di circa 1mb di
sorgenti (ma anche meno) a fine compilazione la dir occupava 70mb! Poi mi sono
ricordato che spesso le librerie contengono simboli che se non sbaglio servono
solo per il debugging e ho fatto strip "file" dove file e' stato sia la
libreria sia gli eseguibili creati, e dopo lo strip tutto si e' ridotto a
dimensioni "normali" e apparentemente tutto funziona ancora. Posso andare
incontro a qualche casino strippando cosi' i file? (il tutto era linkato con
libtool - giusto per dirvelo visto che non so bene cosa faccia)
Se non sbaglio, si puo' mettere -s nelle opzioni di compilazione per strippare
automaticamente?
Ciao,
FC
FidoWEB -> 
http://bbs.romacivica.net/fido

automaticamente?
Oppure invochi 'strip' da makefile.
Leonardo
".signature": bad command or file name

pippo.h?
brutta bestia make, se non ne capisci la filosofia, io ci ho messo
un mese per capirlo.
pippo.o:  pippo.cc pippo.h
	gcc -c pippo.o pippo.cc
nella linea delle dipendenze ci puoi mettere quello che vuoi, non è importante
che siano file .c .cc .o .h .bmp .gif, make controlla la data
dell'ultima modifica e si regola di conseguenza.

pippo.h?
Usi uno dei vari modi automatici per generare le dipendenze.
-- 
ciao, | [Per rispondere togli "toglimi" dal mio indirizzo.]
Marco | * The Internet is full. Go away.  -- Joel Furr *
      | (Ri)scoprire fidonet: 
http://bbs.mi.linux.it

 	gcc -c pippo.o pippo.cc
^^^^
Se non metti un <tab> prima delle azioni non va un tubo...
--
 Ciao, Luca.
 Reply to 
luca....@tiscalinet.it

Ciao 
m...@toglimi.linux.it
,
Mercoledi` 09 Febbraio 2000 alle 11:42, 
m...@toglimi.linux.it
 scrisse a All
riguardo < Re: makefile, file .h e simboli >:
[generare dipendenze automaticamente]
 m> Usi uno dei vari modi automatici per generare le dipendenze.
Certo che se invece mi avessi scritto gcc -MM *.cc, per dire, il messaggio
sarebbe stato piu' utile :-)
Ciao,
FC

Ciao 
ser...@tin.it
,
Lunedi` 07 Febbraio 2000 alle 22:10, 
ser...@tin.it
 scrisse a All riguardo < Re:
makefile, file .h e simboli >:
[ricompilare quando cambia un .h]
 s> Lo metti come dipendenza:
 s> bostroke:       bostroke.o pktutil.o
 s>         $(CC) -o bostroke bostroke.o pktutil.o
 s> bostroke.o:   bostroke.c netstuff.h
Si, questo, grazie anche a un tutorial che AGX mi ha inviato, l'avevo capito,
quello che volevo fare era una cosa automatica, cioe' che il .cc di un certo
file fosse ricompilato anche quando cambiava il .h. Per automatico intendo nonm
dover scrivere le dipendenze ogni volta a mano :). La soluzione e', almeno
finche' non mi studiero' auto{make, conf, ecc ecc} usare gcc -MM *.cc che
estrae le dipendenze automaticamente (grazie AGX :) )
 >> dimensioni "normali" e apparentemente tutto funziona ancora. Posso andare
 >> incontro a qualche casino strippando cosi' i file?
 s> Si', che farne il debugging diventa un'ordalia.
Si ma se io non devo debuggare la libreria che linko e la suppongo perfetta,
non mi importa nulla dei simboli di quella libreria, no?


 FC
Personalmente penso si dovrebbe risolvere il problema esclusivamente
attraverso l'uso del make; mi sembra impossibile che una simile utility
(diciamo: navigatissima) non offra una simile opportunita', tuttavia,
devo ammettere che non ho trovato da nessuna parte un qualche esempio
che possa risolvere il problema, quindi, mi sono dovuto arrangiare con
qualcosa di "artigianale" che mi piace il giusto .... alla fine temo che
la soluzione sopra sia migliore, comunque, sottopongo ugualmente alla
vostra attenzione il mio esempio:
**********************************************************************
# Makefile
# UDA'Software
CC      =       gcc
OBJS    =       main.o function.o
TARGET  =       test
.h.c:
        @touch $*.c
.c.o:
        $(CC) -c $<
all: $(TARGET)
clobber: clean
        rm -f $(TARGET)
clean:
        rm -f $(OBJS) *~ core
install:
        @echo "Installazione del mio programmino !"
        @./test
$(TARGET): $(OBJS)
        $(CC) -o $(TARGET) $(OBJS)
**********************************************************************
// UDA'Software 2000
// File: main.c
#include "function.h"
int main (int argc, char **argv) {
  return MiaFunzione();
}
**********************************************************************
/ UDA'Software 2000
// File: function.h
#ifndef _FUNCTION_H_
#define _FUNCTION_H_
int MiaFunzione();
#endif
**********************************************************************
// UDA'Software 2000
// File: function.c
#include <stdlib.h>
#include "function.h"
int
MiaFunzione() {
  printf("Hello World !\n");
  return 0;
}
**********************************************************************
Ciao a tutti, U D A.
-- 
**********************************************************************
UDA'Software
mailto:
Andrea....@uda.itgo.com
http://uda.itgo.com

Ciao 
uda.so...@tiscalinet.it
,
Domenica 13 Febbraio 2000 alle 21:41, 
uda.so...@tiscalinet.it
 scrisse a All
riguardo < Re: makefile, file .h e simboli >:
 us> .h.c:
 us>         @touch $*.c
Forte :-)) un po' "rozza" ma dovrebbe fare il suo lavoro :), complimenti per
l'inventiva, penso che faro' proprio cosi'


Ciao 
sys...@bbs.romacivica.net
,
Lunedi` 14 Febbraio 2000 alle 16:25, 
sys...@bbs.romacivica.net
 scrisse a
uda.so...@tiscalinet.it
 riguardo < makefile, file .h e simboli >:
 us>> .h.c:
 us>> @touch $*.c
 s> Forte :-)) un po' "rozza" ma dovrebbe fare il suo lavoro :), complimenti
 s> per l'inventiva, penso che faro' proprio cosi'
Rettifica, non lo uso piu' perche' l'editor che uso si accorge se il file su
disco e' cambiato rispetto a quello in editing a causa del touch e ogni volta
mi rompe le scatole (tuttavia questa funzione e' anche utile per evitare casini
dovuti a console multiple aperte, quindi la lascio)
