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 :

header dans makefile


Sujet :

Systèmes de compilation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    366
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 366
    Par défaut header dans makefile
    Bonjour,
    Je rencontre un petit probleme dans un makefile, pour générer mon objet je dois lier mon header qui lui est lié a un autre header. Le probleme est que je ne sais pas comment faire pour creer le lien entre ces deux headers.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #  param.c file
    $(DOBJ)/param.o : $(DSRC)/param.c  $(DSRC)/param.h $(DINC)/lib.h 
    	$(CC) -c $(CC_FLAG) $(DSRC)/param.c -o $(DOBJ)/param.obj
    Si quelqu'un pouvait m'éclairer merci beaucoup

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    366
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 366
    Par défaut
    a l'origine j'utilisais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    # Generic rule for object building
    %.o : %.c
    	@echo == Compiling $< ...
    	$(CC) -c $(CC_FLAG) -o $@ $<
    Mais je ne comprends pas la ligne "@echo == Compiling $< ..."
    Et de plus en utilisant cette facon les .o sont générés dans le répertoire du .c y a t il une methode pour mettre directement les .o dans un meme dossier unique?
    merci

  3. #3
    Membre émérite Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Par défaut
    Peut-être qu'en rajoutant "-I $(DSRC) -I $(DINC)" dans CC_FLAG ?

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par sone47 Voir le message
    Je rencontre un petit probleme dans un makefile, pour générer mon objet je dois lier mon header qui lui est lié a un autre header.
    Le probleme est que je ne sais pas comment faire pour creer le lien entre ces deux headers.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #  param.c file
    $(DOBJ)/param.o : $(DSRC)/param.c  $(DSRC)/param.h $(DINC)/lib.h 
    	$(CC) -c $(CC_FLAG) $(DSRC)/param.c -o $(DOBJ)/param.obj
    Si quelqu'un pouvait m'éclairer merci beaucoup
    Ou la la ! Que de confusions... Il faut absolument apprendre à maitriser le vocabulaire technique, sinon, c'est la confusion la plus totale...
    pour générer mon objet je dois lier mon header <...>
    Non. On ne lie pas un header. On l'inclus dans un fichier (.c ou .h).
    <...> mon header qui lui est lié a un autre header.
    Il ne s'agit pas lien mais de dépendances. Il suffit de l'ajouter dans la liste des dépendances.

    C'est d'ailleurs ce que tu as fait, alors je ne vois pas bien quel est est le problème.

    Ta règle dit : "param.c dépend de la présence (et de la date) de param.h et de lib.h".

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    366
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 366
    Par défaut
    Merci.
    Voici:
    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
    all: $(DEXE)/param.exe
     
    $(DEXEC)/param.exe : $(DOBJ)/param.o $(DOBJ)/param_var.o $(DOBJ)/param_test.o
    	$(CC) $(CFLAGS) -o $(DEXE)/param.exe $param_test.o $(DOBJ)/param.o $(DOBJ)/param_var.o $(DINC)/lib.h
     
    # The test file
    $(DOBJ)/param_test.o : $(DSRC)/param_test.c $(DINC)/lib.h $(DINC)/lib_ife.h $(DSRC)/param.h          
    	$(CC) -c $(CFLAGS) $(DSRC)/param_test.c -o $(DOBJ)/param_test.o 
     
    # The param.c file
    $(DOBJ)/param.o : $(DSRC)/param.c  $(DSRC)/param.h $(DINC)/lib.h 
    	$(CC) -c $(CFLAGS) $(DSRC)/param.c -o $(DOBJ)/param.o 
     
    # The param_var.c file
    $(DOBJ)/param_var.o : $(DSRC)/param_var.c $(DSRC)/param.h
    	$(CC) -c $(CFLAGS) $(DSRC)/param_var.c -o$(DOBJ)/param_var.o
    et l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     *** No rule to make target `/lib.h', needed by `obj/param.o'.  Stop.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    366
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 366
    Par défaut
    est ce qu'avec la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    # The param.c file
    $(DOBJ)/param.o : $(DSRC)/param.c  $(DSRC)/param.h $(DINC)/lib.h 
    	$(CC) -c $(CFLAGS) $(DSRC)/param.c -o $(DOBJ)/param.o
    la dependance entre param.h et lib.h est elle assurée?
    car param.c depend de lib.h et param.h mais param.h depend aussi de lib.h
    merci

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Par défaut
    Bonjour,

    Définis la variable DINC dans ton Makefile.

    Si tu veux générer les dépendances automatiquement, tu peux jeter un coup d'oeil à makedepend. Il scanne les sources et ajoute les dépendances à la fin du fichier Makefile. Par contre, je ne l'utilise plus et je ne me rappelle plus comme ça comment on fait avec des répertoires différents pour les sources et les objets.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    366
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 366
    Par défaut
    Elle est bien définie dans le makefile.
    Mais pourquoi l'erreur est qu'il n'y a pas de regles, faut il une speciale?
    Merci je vais jeter un oeil

  9. #9
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Par défaut
    Il y a effectivement une erreur car il ne trouve pas le fichier /lib.h (il n'est sûrement pas à la racine) alors qu'il devrait dire qu'il ne trouve pas la règle pour le fichier $(DINC)/lib.h (avec DINC remplacé par sa valeur), ce qui me laisse dire que la variable DINC est vide ou n'existe carrément pas.
    Tu es sûr de ce que tu dis ? Tu ne nous as pas envoyé tout le Makefile. En tout cas, ta variable DOBJ est bien définie et vaut obj.

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

Discussions similaires

  1. Inclusion d'un header lors de la compilation dans Makefile
    Par Kaeguri dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 03/04/2007, 16h23
  2. [MFC] Hauteur du header dans un CListCtrl
    Par ouquoi dans le forum MFC
    Réponses: 2
    Dernier message: 07/02/2006, 14h56
  3. Cacher un header dans une CListCtrl
    Par Psykotik dans le forum MFC
    Réponses: 2
    Dernier message: 19/12/2005, 15h48
  4. [ Wsad ] Comment ignorer $Header$ dans un compare ?
    Par dsi0743 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 07/12/2005, 17h36
  5. Gestion des headers dans un Makefile
    Par Weren dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 09/11/2004, 10h44

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