Makefile

Résolu
next Messages postés 43 Date d'inscription   Statut Membre -  
next Messages postés 43 Date d'inscription   Statut Membre -
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

9 réponses

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    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 :
    https://gl.developpez.com/tutoriel/outil/makefile/

    Bonne chance
    5
  2. next Messages postés 43 Date d'inscription   Statut Membre 1
     
    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.
    1
  3. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    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
    0
  4. next Messages postés 43 Date d'inscription   Statut Membre 1
     
    quest-ce qui à changé entre mon code et celui que tu ma donnée ?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. next Messages postés 43 Date d'inscription   Statut Membre 1
     
    j'ai essayé le code est j'ai maintenant : *** séparateur manquant . Arrêt.
    0
  7. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    <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)
    ...
    0
  8. next Messages postés 43 Date d'inscription   Statut Membre 1
     
    je vien de comprendre avec ton dernier post, enfaite il faut utiliser la touche tab. car maintenant ça fonctionne sans probléme encore merci :)
    0
  9. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    Parfait, bonne continuation :-)
    0
  10. next Messages postés 43 Date d'inscription   Statut Membre 1
     
    Merci pour tout. pour la récapitulation, remonter en haut et liser les posts (Je sais pas trop comment récapituler avec des mots :) )
    0