Le vendredi 11 juin, à 15h34 (+0200), LETUFFE SYLVAIN a écrit :
> supposons que j'ai un seul executable au final mais bassé sur 5 ".c"
> que je veux les compiler tous :
> je ne vois qu'une methode :
>
> les compiler tous les uns aprés les autres pour conserver les dépendances :
> genre :
> #*********************
>
> objects = truc.o etc.o bidule.o m.o main.o
>
> main : $(objects)
> gcc $(objects) -o main $(LFLAGS)
> main.o : main.c
> gcc -c main.c $(FLAGS)
>
>
> truc.o : truc.c
> gcc -c truc.c $(FLAGS)
> etc.o : etc.c
> ........
> ......
>
> #*********************
> y a une autre methode ?
Tu peux écrire la même chose de façon abrégée :
%.o: %.c
gcc -c $< $(FLAGS)
ou encore ne rien écrire du tout et utiliser la règle par défaut qui est
CC = cc
OUTPUT_OPTION = -o $@
COMPILE.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
%.o: %.c
$(COMPILE.c) $< $(OUTPUT_OPTION)
(tu peux voir ça en faisant make -np). Ce qui revient à
%.o: %.c
cc -c $< -o $@
(CFLAGS, CPPFLAGS et TARGET_ARCH sont vides par défaut).
Fais attention quand même à un truc : cette syntaxe (avec %) ne marche,
à ma connaissance, qu'avec GNU Make. Si tu veux que ton programme soit
portable en dehors de Linux, fais plutôt quelque chose comme
.c.o:
$(CC) $(CFLAGS) $(CPPFLAGS) -c $<
Ça devrait passer à peu près sur tous les Make.
--
Edgar Bonet Orozco
Lab. Louis Néel -- CNRS Tel : +33 476-88-90-89
BP 166 Fax : +33 476-88-11-91
38042 Grenoble cedex 9 e-mail : bonet@???