Rechercher : dans
Par :

Makefile

Dernière réponse le 10 jan 2008 à 02:08:03 next, le 8 jan 2008 à 14:15:13 
 Signaler ce message aux modérateurs

Bonjour à tous, voila j'ai créé un fichier Make file est j'ai plusieurs problémes...

Quand j'essaye de placer un @echo j'ai le message

Makefile:16: *** séparateur manquant (voulez-vous dire TAB au lieu de 8 blancs d'espacement?). Arrêt.

ou meme pour clean j'ai le message :


make: *** Pas de règle pour fabriquer la cible « rm », nécessaire pour « clean ». Arrêt.

voici mon code :

OBJS = main.o command.o
LINKOBJET = main.o command.o
BIN = ircweb
CC = gcc
CFLAGS =-W -Wall -ansi -pedantic -D_REENTRANT -std=c99
LDFLAGS=-I /usr/include/mysql/ -L /usr/lib/mysql/ -lmysqlclient -lpthread
RM = rm -f

all: $(BIN) clean

clean: ${RM} $(OBJS) *.c~


$(BIN): $(OBJS)
$(CC) $(LINKOBJET) -o $(BIN) $(LDFLAGS)

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

command.o: command.c
$(CC): $(CFLAGS) -c command.c -o command.c
@echo fin de la compilation.


Pouvez vous m'aider ?

Configuration: Linux Debian
Mozilla 1.8.1.10

Meilleures réponses pour « Makefile » dans :
La compilation et les modules en C et en C++ VoirCet article a pour vocation d'introduire les notions de bases de la compilation en C et en C++ et de la programmation modulaire. Il permet de mieux comprendre les messages d'erreur du compilateur. Les notions abordées ici sont indépendantes du...

1

mamiemando, le 8 jan 2008 à 15:36:07

Après chaque cible, chaque commande doit être à la ligne et précédée d'une tabulation (et pas d'une suite d'espace). Pour plus d'informations :
http://gl.developpez.com/tutoriel/outil/makefile/

Bonne chance

Répondre à mamiemando

2

next, le 8 jan 2008 à 15:42:43

Merci, mais j'avais déjà lu ce tuto là, et il m'aide pas vraiment désolé ...

peut-tu me montré comment faire sur mon Makefile ça m'aiderai vraiment à comprendre.

Répondre à next

4

mamiemando, le 8 jan 2008 à 20:54:49

Ben je sais pas dans ton cas ça ressemblerai plutôt à :

OBJS = main.o command.o
LINKOBJET = main.o command.o
BIN = ircweb
CC = gcc
CFLAGS =-W -Wall -ansi -pedantic -D_REENTRANT -std=c99
LDFLAGS=-I /usr/include/mysql/ -L /usr/lib/mysql/ -lmysqlclient -lpthread
RM = rm -f

all: $(BIN) clean

clean: 
    ${RM} $(OBJS) *.c~

$(BIN): $(OBJS)
    $(CC) $(LINKOBJET) -o $(BIN) $(LDFLAGS)

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

command.o: command.c
    $(CC): $(CFLAGS) -c command.c -o command.c
    @echo fin de la compilation. 

(ou chaque alinéa est une tabulation)

Bonne chance

Répondre à mamiemando

5

next, le 8 jan 2008 à 23:44:48

Quest-ce qui à changé entre mon code et celui que tu ma donnée ?

Répondre à next

6

next, le 8 jan 2008 à 23:47:45

J'ai essayé le code est j'ai maintenant : *** séparateur manquant . Arrêt.

Répondre à next

7

mamiemando, le 9 jan 2008 à 10:25:08

<5> Les retours à la ligne et les tabulations
<6> As-tu bien mis des tabulations :

clean: 
<TABULATION>${RM} $(OBJS) *.c~
$(BIN): $(OBJS)
<TABULATION>$(CC) $(LINKOBJET) -o $(BIN) $(LDFLAGS)
...

Répondre à mamiemando

8

next, le 9 jan 2008 à 13:25:02

Je vien de comprendre avec ton dernier post, enfaite il faut utiliser la touche tab. car maintenant ça fonctionne sans probléme encore merci :)

Répondre à next

9

mamiemando, le 9 jan 2008 à 14:27:15

Parfait, bonne continuation :-)

Répondre à mamiemando

10

 next, le 10 jan 2008 à 02:08:03

Merci pour tout. pour la récapitulation, remonter en haut et liser les posts (Je sais pas trop comment récapituler avec des mots :) )

Répondre à next