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 :

Makefile C++ et sous repertoires


Sujet :

Systèmes de compilation

  1. #1
    Membre régulier
    Homme Profil pro
    Thésard
    Inscrit en
    Mars 2013
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Thésard
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2013
    Messages : 54
    Points : 78
    Points
    78
    Par défaut Makefile C++ et sous repertoires
    Bonjour à tous,

    Je commence un nouveau projet en C++ et je souhaiterais utiliser un Makefile.

    Après avoir parcouru les tutoriels pour débutants en makefile et quelques articles du forum j'ai essayé de faire un petit test. A savoir que j'ai l'habitude de travailler avec un mes headers dans un dossier ./include et mes fichiers *.cpp dans un dossier ./src. L'idée étant d'avoir le Makefile à la racine de tout cela.

    J'ai donc les fichiers "main.cpp" & "myVector.cpp" dans ./src et "myVector.hpp" dans ./include. Je souhaite appeler mon executable "test". Lorsque je compile j'obtiens l'erreur suivante : "No rule to make target `myVecotr.o'".

    Voici mon Makefile :

    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
    19
    20
    21
    22
    23
    24
    25
     
    CXX= g++
    CXXFLAGS= -W -Wall -g -ansi -pedantic
    LDFLAGS=
    EXEC= test
    SRC= src/myVector.cpp src/main.cpp
     
    all: $(EXEC)
     
    $(EXEC): main.o myVecotr.o
    	$(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS)
     
    main.o: src/main.cpp include/myVector.hpp
    	$(CXX) -o $@ -c $< $(CXXFLAGS)
     
    myVector.o: src/myVector.cpp include/myVector.hpp
    	$(CXX) -o $@ -c $< $(CXXFLAGS)
     
    .PHONY: clean mrproper
     
    clean:
    	rm -rf *.o
     
    mrproper: clean
    	rm -rf $(EXEC)
    N'importe quelle idée pour me faire avancer est la bienvenue.

    Je vous remercie par avance,

    betaplus

  2. #2
    Membre régulier
    Homme Profil pro
    Thésard
    Inscrit en
    Mars 2013
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Thésard
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2013
    Messages : 54
    Points : 78
    Points
    78
    Par défaut
    Problème résolu avec ce Makefile, mais si vous avez des idées pour l'améliorer je suis preneur...

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    CXX=g++
    CXXFLAGS=-W -Wall -g -ansi -pedantic
    LDFLAGS=
    EXEC=test
    SRC= src/myVector.cpp src/main.cpp
    OBJ= $(SRC:.c=.o)
     
    all: $(EXEC)
     
    hello: $(OBJ)
    	$(CXX) -o $@ $^ $(LDFLAGS)
     
    main.o: ./include/myVector.hpp
     
    %.o: %.c
    	$(CXX) -o $@ -c $< $(CXXFLAGS)
     
     
    .PHONY: clean mrproper
     
    clean:
    	rm -rf *.o
    	$(info clean successfully)
     
     
    mrproper: clean
    	rm -rf $(EXEC)

  3. #3
    Membre éclairé
    Inscrit en
    Décembre 2010
    Messages
    290
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 290
    Points : 719
    Points
    719
    Par défaut
    Citation Envoyé par betaplus Voir le message
    Lorsque je compile j'obtiens l'erreur suivante : "No rule to make target `myVecotr.o'".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $(EXEC): main.o myVecotr.o
    	$(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS)
    Oui en effet, myVecotr.o c'est différent de myVector.o.

  4. #4
    Membre régulier
    Homme Profil pro
    Thésard
    Inscrit en
    Mars 2013
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Thésard
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2013
    Messages : 54
    Points : 78
    Points
    78
    Par défaut
    Effectivement... une belle erreur de débutant.
    Merci quand même

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [FLASH MX2004] Classes dans sous-répertoires
    Par tomperso dans le forum Flash
    Réponses: 4
    Dernier message: 31/08/2006, 23h13
  2. Nombre de sous répertoire autorisés
    Par cathou9999 dans le forum Shell et commandes GNU
    Réponses: 20
    Dernier message: 20/02/2006, 10h02
  3. Liste de fichie stocké ds des sous repertoire
    Par Amlou dans le forum Access
    Réponses: 1
    Dernier message: 27/09/2005, 14h13
  4. Scan d'un repertoire et sous repertoires
    Par Malone dans le forum Langage
    Réponses: 6
    Dernier message: 08/08/2005, 13h03
  5. Compter le nombre de sous-repertoires
    Par n00bi dans le forum Langage
    Réponses: 3
    Dernier message: 16/07/2004, 12h11

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