PDA

Afficher la version complète : tuto makefile



JuTs
31/03/2006, 10h23
http://www.alionet.org/index.php?showtopic=1697
Où est-il passé ?

molodoi
31/03/2006, 10h31
il est passé sur le wiki...

http://wiki.alionet.org/doku.php?id=makefile

http://www.alionet.org/style_emoticons/<#EMO_DIR#>/wiseman.gif

JuTs
31/03/2006, 11h53
merci,

ça serait pas mal de modifier le lien de ce topic : http://www.alionet.org/index.php?showtopic=1760

JuTs
31/03/2006, 13h29
A première vue est-ce que ce makefile est correct ?


CC=gcc
LIBS=-lGL -lGLU -lglut -lX11 -lXmu -lXi -lm
LIBSDIR= -L /usr/X11R6/lib

all: prog

prog: evenement.o geometrie.o triangle.o
gcc evenement.o geometrie.o triangle.o -o prog

evenement.o: evenement.c evenements.h geometrie.h triangle.h
${CC} -g -Wall -c evenement.c ${LIBS} ${LIBSDIR}

geometrie.o: geometrie evenements.h geometrie.h triangle.h
${CC} -g -Wall -c geometrie.c ${LIBS} ${LIBSDIR}

triangle.o: triangle.c evenements.h triangle.h
${CC} -g -Wall -c triangle.c ${LIBS} ${LIBSDIR}

clean :
/bin/rm -f prog evenement.o geometrie.o triangle.o

j'obtiens l'erreur
<div class='quotetop'>Citation </div>
make: *** Pas de règle pour fabriquer la cible « evenement.c », nécessaire pour « evenement.o ». Arrêt.[/b]

Dudule-le-poisson
31/03/2006, 16h59
L'erreur que tu obtiens semble signifier qu'il n'y a pas de fichier "evenement.c" ; vu que tu as un fichier evenements.h, peut-être as-tu oublié ou rajouté un s quelque part ?
Sinon dans prog:, tu devrais utiliser $(CC) au lieu de gcc. Tu peux aussi définir une variable pour /bin/rm. Le reste me paraît bon.

JuTs
31/03/2006, 22h30
C'était ça !

Je vais encore améliorer. J'ai plusieurs projets du même genre, je vais tenter d'automatiser un peu tout ça http://www.alionet.org/style_emoticons/<#EMO_DIR#>/smile.gif

JuTs
31/03/2006, 23h59
depend:
$(RM) -f .depend
makedepend -f- -- $(CFLAGS) -- $(SRC) > .depend

include .depend

si le fichier .depend n'existe pas j'obtiens cette erreur :
<div class='quotetop'>Citation </div>
Makefile:27: .depend: Aucun fichier ou répertoire de ce type
make: *** Pas de règle pour fabriquer la cible « .depend ». Arrêt.[/b]

même si je fais make depend


EDIT : en fait si je fais make c'est bon. mais si je fais make depend, ça râle

JuTs
04/04/2006, 23h07
Nouvelle version améliorée. Plus besoin d'éditer le fichier en cas d'utilisation avec plusieurs projet. (sauf si l'environnement change).


#compilateur
CC=gcc
#flags du compilateur
CFLAGS= -g -Wall

#linker
LD=gcc
#librairies pour le linker
LIBS=-lGL -lGLU -lglut
#flags du liker
LDFLAGS=

#nom de l'exécutable
BIN=bin

#chemin de la commande rm
RM=/bin/rm

#fichiers sources
SRC=$(wildcard *.cpp)

#fichier *.o
OBJS=$(addsuffix .o,$(basename $(wildcard *.cpp)))

#Règle de haut niveau
all: ${BIN}

#Compilation des sources
%.o: %.cpp
${CC} ${CFLAGS} -c $<

#Linkage
${BIN}: ${OBJS}
${LD} ${LDFLAGS} ${OBJS} -o ${BIN} ${LIBS}

#recherche des dépendances
depend:
$(RM) -f depend
makedepend -f- -- $(CFLAGS) -- $(SRC) > depend

include depend

#nettoyage
clean :
${RM} -f ${BIN} ${OBJS} depend