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

C++ Discussion :

Probleme de makefile en C++ avec classe mere et fille


Sujet :

C++

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Probleme de makefile en C++ avec classe mere et fille
    Bonjour

    J'ai un programme class.cpp
    Ce programme utilise 2 classes; salle.cpp et salle_cours.cpp (salle_cours est une spécification de salle et qui utilise salle.h

    J'ai donc Salle.cpp Salle.h
    Salle_cours.cpp Salle_cours.h
    class.cpp

    Voici mon make file



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    essai.exe:class.o Salle.o Salle_cours.o
    	g++ -o essai.exe class.o Salle.o Salle_cours.o
     
    Salle.o:Salle.cpp Salle.h
    	g++ -c Salle.cpp
     
    Salle_cours.o:Salle_cours.cpp Salle_cours.h Salle.h
    	g++ -c Salle_cours.cpp
     
    class.o: class.cpp Salle.cpp Salle_cours.h
    	g++ -c class.cpp
     
    clean:
    	rm *.o
    Le probleme, c'est que quand je compile voici le message d'erreur :
    make: *** Pas de règle pour fabriquer la cible « Salle_cours.h », nécessaire pour « class.o ». Arrêt.

    Alors, tous mes fichiers sont dans le me dossier

    Voici le debut du fichier Salle.cpp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #include "Salle.h"
    #include <iostream>
     
    #include <string>
     
    using namespace std;
    ...
    Voici le debut du fichier Salle.h

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #pragma once
    #include <string>
    using namespace std;
     
     
    class Salle
     
    {
    ...
    Voici le debut du fichier Salle_cours.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    #include "Salle_cours.h"
     
     
    ...
    Voici le debut du fichier Salle_cours.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #pragma once
    #include "Salle.h"
     
     
    class Salle_cours :
     
    	public Salle
     
    {
    ...
    Voici le debut du fichier class.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #include "Salle_cours.h"
    #include <iostream>
     
    using namespace std;
     
     
    int main() {
    ...

    Donc si quelqu'un peux me dire ou est mon erreur ca serait tres gentil

    Merci

    Aymeric

  2. #2
    Membre éprouvé Avatar de Steph_ng8
    Homme Profil pro
    Doctorant en Informatique
    Inscrit en
    Septembre 2010
    Messages
    677
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant en Informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 677
    Points : 997
    Points
    997
    Par défaut
    Bonjour.
    Tout d'abord, quelques remarques.

    Pour les blocs de code, l'utilisation de la balise CODE (le dièse dans la barre de boutons) est fortement conseillée.
    Cela permet de bien faire ressortir le bout de code du reste du message, avec en prime la coloration syntaxique.
    De plus, un bloc avec ascenseur si nécessaire est affiché ; donc ça ne prend pas trop de place sur la page.
    Visuellement, c'est plus agréable également.

    Ce n'est pas conseillé (voire déconseillé ?) d'utiliser l'instruction « using namespace » dans un fichier d'en-tête.
    Les espaces de noms ont été créés pour éviter les conflits de noms, alors on n'utilise cette instruction que le plus tard possible, lorsque l'on est absolument sûr qu'il n'y aura pas de conflit.
    On ne sait pas a priori où ni quand sera inclus un fichier d'en-tête (dans le cas général), donc on ne peut pas garantir à ce niveau qu'il n'y aura pas de conflit ; donc pas de « using namespace ».

    C'est normal que « class.o » soit dépendant de deux fichiers .cpp ?
    La règle de ton makefile correspondante devrait être celle-ci, non ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    class.o: class.cpp Salle_cours.h
        g++ -c class.cpp
    C'est un détail, mais va voir par ici, au moins pour ton fichier principal.

    Je ne connais pas très bien les directives « #pragma », mais je suppose que « #pragma once » signifie que le préprocesseur ne doit inclure le fichier que s'il n'a pas déjà été inclus.
    Usuellement, c'est plus quelque chose du genre qu'on utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #ifndef SALLE_COURS_H
    #define SALLE_COURS_H
     
    // Le contenu du fichier
     
    #endif // SALLE_COURS_H
    Certains nommeraient leur macro « __SALLE_COURS_H__ », comme pour la STL, mais c'est un détail.
    Le commentaire à la fin n'est pas indispensable, c'est juste pour savoir à quel « #if » correspond le « #endif ».
    Après, entre les deux méthodes, je ne saurais dire laquelle est la meilleure.

    Une dernière remarque personnelle, je trouve ça étrange de nommer un fichier « class.cpp », surtout le fichier principal.
    J'ai plutôt l'habitude de nommer mon fichier principal avec un nom qui a un rapport avec l'application que je développe (souvent le même nom que l'exécutable), ou à défaut « main.cpp ».
    Mais ça ne regarde que moi, tu fais ce que tu veux…


    Voilà.
    Je suis désolé, mais je n'ai pas de réponse à ta question.
    D'après ce que je vois, il ne devrait pas y avoir de problème.
    Peut-être les directives « #pragma »…

  3. #3
    Membre éprouvé Avatar de Steph_ng8
    Homme Profil pro
    Doctorant en Informatique
    Inscrit en
    Septembre 2010
    Messages
    677
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant en Informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 677
    Points : 997
    Points
    997
    Par défaut
    Bon, ça compile très bien chez moi.
    Si tu es sûr d'avoir bien nommé tes fichiers, je ne vois vraiment pas pourquoi ça ne marche pas.
    Désolé.

  4. #4
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Probleme de casse dans le nom des fichiers?
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci pour vos remarque, le probleme venait de mon makefile avec la definition de class

    Merci

Discussions similaires

  1. Probleme avec classes internes
    Par pseudobidon57 dans le forum Langage
    Réponses: 5
    Dernier message: 03/07/2007, 11h49
  2. probleme GetParent , reconnaitre la classe mere
    Par cookieParis dans le forum wxWidgets
    Réponses: 2
    Dernier message: 01/06/2007, 11h42
  3. Problèmes avec classes et pointeurs
    Par Anas1984 dans le forum C++
    Réponses: 2
    Dernier message: 02/11/2006, 12h49
  4. Help ! probleme avec classe derivee
    Par marcozar dans le forum C++
    Réponses: 2
    Dernier message: 06/09/2006, 15h56
  5. [POO] [Alias] Problème d'include avec classe
    Par scorpiwolf dans le forum Langage
    Réponses: 3
    Dernier message: 05/06/2006, 20h55

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