Re: Les Makefile ... CPU ?

Startseite

Nachricht beantworten
Autor: Edgar Bonet Orozco
Datum:  
To: guilde
Betreff: Re: Les Makefile ... CPU ?
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@???