IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Systèmes de compilation Discussion :

Pbm avec make & Makefile


Sujet :

Systèmes de compilation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2002
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 89
    Par défaut Pbm avec make & Makefile
    Bonjour,
    j'ai un Makefile que je voudrais adapter pour mon projet mais make me donne une erreur. voici l'original
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    CC=gcc
    CFLAGS=-c -Wall
    LDFLAGS=
    SOURCES=main.c hello.c factorial.c
    OBJECTS=$(SOURCES:.c=.o)
    EXECUTABLE=hello
     
    all: $(SOURCES) $(EXECUTABLE)
     
    $(EXECUTABLE): $(OBJECTS) 
    	$(CC) $(LDFLAGS) $(OBJECTS) -o $@
     
    .c.o:
    	$(CC) $(CFLAGS) $< -o $@
    et la version adapté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    CC=gcc
    CFLAGS=-c -Wall
    LDFLAGS=
    OBJDIR=obj/
    SRCDIR=src/
    SRCFILES=main.c hello.c factorial.c
    SOURCES=$(SRCDIR)$(SRCFILES:.c=.c)
    OBJECTS=$(OBJPATH)$(SRCFILES:.c=.o)
    EXECUTABLE=hello
     
    all: $(SOURCES) $(EXECUTABLE)
     
    $(EXECUTABLE): $(OBJECTS) 
    	$(CC) $(LDFLAGS) $(OBJECTS) -o $@
     
    $(OBJECTS):
    	$(CC) $(CFLAGS) $< -o $@
    l'idée bien sur est d'avoir dans SOURCES ce qui suis src/main.c src/hello.c src/factorial.c
    et dans OBJECTS obj/main.o obj/hello.o obj/factorial.o

    mais le resultat est different dans OBJECTS il y a obj/main.o hello.o factorial.o
    quelqu'un a une idée de la maniere pour réaliser ce Makefile ?

    Merci

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut
    Salut,

    Quelle erreur te donne make ?
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2002
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 89
    Par défaut
    voici ce que j'ai comme erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    make: *** Pas de règle pour fabriquer la cible « obj/main.o », nécessaire pour « hello ». Arrêt.
    merci.

  4. #4
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Salut.

    Tu dois aussi adapter cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SRCFILES=main.c hello.c factorial.c
    En fonction de tes fichiers.c ou .cpp ...

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2002
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 89
    Par défaut
    Pardon je n'est pas bien saisi ce que tu veux dire par adapter cette ligne.
    au depart j'avais des fichiers sources que j'ai deplacé vers un repertoire src/ et je veux que les fichiers objets soient compilé et mis dans le repertoire obj/
    j'ai reussi a mettre dans SOURCES ceci /src/main.c /src/hello.c src/factorial.c
    et dans OBJECTS ceci obj/main.o obj/hello.o obj/factorial.o en modifiant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SOURCES = $(patsubst %, $(SRCDIR)%, $(SRCFILES))
    OBJ = $(SOURCES:.c=.o)
    OBJECTS=$(subst $(SRCDIR), $(OBJPATH), $(OBJ))
    mais le probleme reste le meme ici ce qui me cause des soucis c'est qu'il me dit qu'il ne sais pas comment fabrique obj/main.o qui est un composant de OBJECTS meme quand je modifie la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $(EXECUTABLE): $(OBJECTS) 
    	$(CC) $(LDFLAGS) $(OBJECTS) -o $@
     
    $(OBJECTS):
    	$(CC) $(CFLAGS) $< -o $@
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $(EXECUTABLE): 
    	$(CC) $(LDFLAGS) $(OBJECTS) -o $@
     
    $(OBJPATH)%o:$(SRCDIR)%c
    	$(CC) $(CFLAGS) $< -o $@
    bien sûr OBJPAH contient obj/ et SRCDIR = src/
    merci pour vos reponses

  6. #6
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Alors il manque peut être un / devant le obj des tes fichiers.o ...

  7. #7
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Citation Envoyé par CodeurNé Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $(EXECUTABLE): 
    	$(CC) $(LDFLAGS) $(OBJECTS) -o $@
    Ceci est incorrect, il faut conserver la dépendance sur $(OBJECTS) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $(EXECUTABLE): $(OBJECTS)
    	$(CC) $(LDFLAGS) $^ -o $@
    Sinon, es-tu certain du contenu de $(OBJECTS) et $(SRCFILES) ?
    Personnellement, j'aurais plutôt utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SRCFILES= $(wildcard $(SRCDIR)/*.c)
    OBJECTS= $(patsubst $(SRCDIR)/%.c,$(OBJPATH)/%.o,$(SRCFILES))

Discussions similaires

  1. pbm avec setMinimumSize()
    Par toxyshow dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 26/11/2005, 18h30
  2. pbm avec les foreigns keys.....
    Par j_bonc dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 11/06/2004, 10h23
  3. Problème avec make menuconfig
    Par Kehel dans le forum Linux
    Réponses: 5
    Dernier message: 05/03/2004, 08h07
  4. [JB9][EJB]Compiler avec Make ou javac ?
    Par _gtm_ dans le forum JBuilder
    Réponses: 4
    Dernier message: 11/07/2003, 15h59
  5. Pbm avec les '&'...
    Par AmaX dans le forum Composants VCL
    Réponses: 2
    Dernier message: 19/08/2002, 11h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo