CRÉATION ET UTILISATION DE MAKEFILE

cs_Skyman Messages postés 24 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 26 septembre 2003 - 11 juin 2003 à 15:05
roygrizzly Messages postés 17 Date d'inscription mardi 25 janvier 2005 Statut Membre Dernière intervention 11 mai 2006 - 6 mai 2006 à 17:51
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/10889-creation-et-utilisation-de-makefile

roygrizzly Messages postés 17 Date d'inscription mardi 25 janvier 2005 Statut Membre Dernière intervention 11 mai 2006
6 mai 2006 à 17:51
Bonjour,
je programme un compilateur, comme je dois utiliser yacc, lex, gcc, nasm, alink, utiliser un makefile est nécessaire, le voici :

OBJ = arbre.o assembleur.o pile.o tds.o grammaire.o scanner.o main.o
CC = gcc
OP = -Wall -ansi -g


all : analyseurs \
programme \
exec \
assemble

exec : /prog.exe<a.c

programme : $(OBJ)
$(CC) $(OBJ) -o prog.exe

main.o : main.c
$(CC) $(OP) -c main.c -o main.o

arbre.o : arbre.h arbre.c
$(CC) $(OP) -c arbre.c -o arbre.o

assembleur.o : assembleur.h assembleur.c
$(CC) $(OP) -c assembleur.c -o assembleur.o

pile.o : pile.h pile.c
$(CC) $(OP) -c pile.c -o pile.o

tds.o : tds.h tds.c
$(CC) $(OP) -c tds.c -o tds.o

grammaire.o : grammaire.h grammaire.c
$(CC) $(OP) -c grammaire.c -o grammaire.o

scanner.o : lex.yy.c
$(CC) $(OP) -c lex.yy.c -o scanner.o

clean :
rm -f prog.exe *.stackdump core *.o *~ grammaire.h grammaire.c lex.yy.c a.asm a.obj a.exe

analyseurs :
yacc -d grammaire.y -o grammaire.h
yacc grammaire.y -o grammaire.c
flex scanner.l

assemble :
nasm -fobj a.asm -o a.obj
alink -oPE a.obj -o a.EXE

les règles analyseur et programme fonctionnent mais la règle exec ne fonctionne pas
je veux faire une redirection car mon programme lit un fichier (./prog.exe<a.c). Apparament c'est le < qui pose problème, j'ai essayer \< et \\< mais ça marche pas

Merci pour votre aide

ps: je travaille avec Cygwin
cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 2
31 oct. 2005 à 18:27
Oui il y a celui fourni avec Visual (nmake.exe), dont la syntaxe est quasiment identique. Mais je trouve celui de MinGW plus versatile (on peut l'utiliser avec Visual par exemple) et complet, donc je n'ai pas trop cherché à l'utiliser :/
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
31 oct. 2005 à 16:22
Très intéressant, c'est mieux que mes bat, qui recompilent tout à chaque fois :)
Connais tu un autre make que celui de MinGW sous Windows?
cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 2
4 janv. 2005 à 21:15
Pourquoi tu mets des \ à la fin des lignes, çà n'a aucun sens. Essaie plutôt :

SRC = main.cpp
OBJ = $(SRC:.cpp=.o)

EXE = echec

CC = g++
CFLAGS = -Wall -Os
LFLAGS = -mconsole

%.o: %.cpp *.hpp
<tab>$(CC) $(CFLAGS) -c $< -o $@

all: $(EXE)

$(EXE): $(OBJ)
<tab>$(CC) $^ $(LFLAGS) -o $(EXE)

strip: $(EXE)
<tab>strip --strip-all $(EXE)

clean:
<tab>del $(OBJ) $(EXE)

En remplaçant <tab> par une VRAIE tabulation (code ascii 9). Pour utiliser g++, les noms des variables changent (GFLAGS devient CXXFLAGS, et CC je sais pas, j'utilise que gcc).
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
28 déc. 2004 à 18:16
euh.. HELP
Makefile:8: *** schémas de cible multiples. Arrêt.
max@Max:~/echec$

voici mon fichier :
@echo "Compilation du jeu d'échec..."\
SRC = main.cpp
OBJ = $(SRC:.cpp=.o)
EXE = echec
CC = g++
CFLAGS = -Wall -Os
LFLAGS = -mconsole
%.o: %.cpp *.hpp\
$(CC) $(CFLAGS) -c $(<) -o $(@)\
all: compile\
$(EXE): $(OBJ)\
$(CC) $(OBJ) $(LFLAGS) -o $(EXE)\
strip: $(EXE)\
strip --strip-all $(EXE)\
del $(OBJ)\
del $(EXE)\

avant j'avais pas mis les / mais il me mettait :
Makefile:9: *** séparateur manquant . Arrêt.
Galett Messages postés 115 Date d'inscription jeudi 7 février 2002 Statut Membre Dernière intervention 21 mai 2005
12 juin 2003 à 15:37
voila kkchose de bien pratique, merchi :o)
cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 2
12 juin 2003 à 08:52
Pour moi le 10/10 c'est pour un truc absolument parfait, autant dire utopique, merci à vous deux :)

Je n'utilise pas Dev-C++, bien que j'utilise GCC 3.2.3 et que j'attende la version windows du 3.3 avec une certaine impatience...

Ceci étant dit ;) Pour du C, il vaut mieux se familiariser d'abord avec le language grace aux applications consoles, qui nous débarassent de toute la partie "interface graphique", spécifique au système... Un site incontournable sur le sujet : http://www.developpez.com/c/cours/ qui référence des cours, mais je recommande de commencer avec http://www.infini-fr.com/ dont les explications sont plus claires et moins rébarbatives...

Une fois ce stade maitrisé, il est temps de passer aux applications graphiques ! Le meilleur site que je connaisse à ce sujet : http://www.winprog.org/tutorial/ (mais prévoyez un accès à la MSDN ou au fichier win32.hlp pour creuser davantage, le site ne fournit que les bases pour comprendre le système)

Voila... J'espère que çà t'aidera Zazour ;)

@++
Zazour Messages postés 120 Date d'inscription mercredi 7 mai 2003 Statut Membre Dernière intervention 14 janvier 2006
12 juin 2003 à 07:02
J'ai mis 8 car 10/10 n'existe pas pour moi.
Merci pour toutes ces explications sur DEC C++,si tu as d'autres aides sur cet environnement (en Français si possible)car depuis que je suis passé a DEV C++ 4.9.8.0 avec GCC3.2 j'ai plus de blem a compiler.
D'ou une autre question(excuse du hors sujet):
Vaut il mieux programmer avec la norme ANSI?et ou trouver de la doc (FR) pour prendre tout de suite les bons plis.
cs_Skyman Messages postés 24 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 26 septembre 2003
11 juin 2003 à 15:06
Sa merite un 9/10 (pas 10 paske y en a ki abusent avec les 10)
cs_Skyman Messages postés 24 Date d'inscription vendredi 6 juin 2003 Statut Membre Dernière intervention 26 septembre 2003
11 juin 2003 à 15:05
Weeeeeeeesheeuuuuu
Ca c'est coul pake g jamais su commen compiler plusieurs fichiers C sous linux (en mode texte)
merci !!!
Rejoignez-nous