Ce makefile est il correct sous unix

kun.sasuke Messages postés 20 Statut Membre -  
mamiemando Messages postés 34243 Date d'inscription   Statut Modérateur Dernière intervention   -
svp, dans ce makefile:
/************************************************/
OBJS=ant.o colony.o color.o const.o painting.o paintingants_v2.o parameter.o pheromone.o rand.o

FLAGS=-D NOGLUT,NOIMAGEMAGICK

paintingants : paintingants_v2.c parameter.h painting.h ant.h colony.h color.h rand.h \
$(OBJS)
gcc $(OBJS) $(FLAGS) -o paintingants_v2

ant.o : ant.c ant.h rand.h
gcc $(FLAGS) -c ant.c

colony.o : colony.c colony.h ant.h color.h rand.h
gcc $(FLAGS) -c colony.c

color.o : color.c color.h
gcc $(FLAGS) -c color.c

const.o : const.c const.h
gcc $(FLAGS) -c const.c

painting.o : painting.c painting.h
gcc $(FLAGS) -c painting.c

paintingants_v2.o : paintingants_v2.c
gcc $(FLAGS) -c paintingants_v2.c

parameter.o : parameter.c parameter.h
gcc $(FLAGS) -c parameter.c

rand.o : rand.c rand.h
gcc $(FLAGS) -c rand.c

clean:
rm *.o
/*******************************************************/
que signifie cette ligne :
FLAGS=-D NOGLUT,NOIMAGEMAGICK

est elle necessaire?

entre autres est ce que ce makefile peut marcher sous unix??

merci d'avance
A voir également:

1 réponse

mamiemando Messages postés 34243 Date d'inscription   Statut Modérateur Dernière intervention   7 898
 
Il faut bien mettre les tabulations (et surtout pas des espaces) sous les cibles. Exemple :
ant.o : ant.c ant.h rand.h
    gcc $(FLAGS) -c ant.c

Le -D sert à faire un #define au niveau de la compilation (ici c'est pour éviter les section de code utilisant les objets glut et imagemagick (qui existent tout deux sous linux).

Pour moi il manque aussi la cible all (cible par défaut), mais celle-ci n'est pas indispensable. Elle est généralement utilisée pour assembler et linker les .o ensemble et ainsi créer l'éxecutable final, c'est en fait ta cible paintingants. Il suffit donc de rajouter la ligne :
all : paintingants

Il y a souvent dans les makefile linux quelques autres cibles classiques (make distclean par exemple) mais qui ne sont pas indispensables non plus.

Bonne chance
0