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 :

makefile commande makedepend recompile tout


Sujet :

C

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 428
    Points : 170
    Points
    170
    Par défaut makefile commande makedepend recompile tout
    Bonjour, j'utilise la commande makedepend ça marche, mais le problème, quand je modifie un seul fichier .h ça me recompile tout le programme alors que je voudrai recompilé que les fichiers modifiés.

    Voici mon makefile avec la commande makedepend :

    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
     
     
    CCCOM=$(CC) $(COPTS)
    COPTS = -c -g -W -Wall -Werror  -O3 -UDEBUG
    SRC=$(wildcard *.c)
    OBJS=$(SRC:.c=.o)
     
    life : $(OBJS)
    	$(CC)  $^ -o $@ -L/usr/local/lib -lSDLmain -lSDL -lcomdlg32
     
    %.o : %.c 
    	$(CCCOM) $<
     
    .PHONY : clean depend
     
    depend:
    	 makedepend $(SRC) 
     
    clean : 
    	$(RM)  $(OBJS) *~ *.stckdump *.exe \#*\#
     
    mrproper : clean
    	rm -rf $(EXEC) #remove all
    J'ai beaucoup chercher sur internet une solution mais je n'ai pas trouvé si vous avez une solution ; merci par avance.

    J'ai aussi des warnings après avoir fait mon "make depend" dans ma console cygwin voici une image :

    Pièce jointe 270070

    Mon programme SDL marche malgré ces warnings si vous avez une idée.

  2. #2
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 186
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 186
    Points : 17 126
    Points
    17 126
    Par défaut
    Visiblement, ta commande makedepend n'est pas correcte.
    Regarde dans sa documentation (man?) pour trouver un exemple.
    Comme elle ne fonctionne pas comme il faut, le make file ne fonctionne pas non plus comme il faut.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  3. #3
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 186
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 186
    Points : 17 126
    Points
    17 126
    Par défaut
    Et surtout, corrige immédiatement ton "mrproper".
    tu fais un "rm -rf $(EXEC)", qui supprime récursivement le contenu d'une variable non définie!
    Retire le r (récursion) de -rf, et définis ton EXEC (liste des programmes produits).
    Tu devrait passer par la variable CFLAGS plutot que COPTS. CC invoque correctement CFLAGS
    Je crois qu'il y a aussi une variable LDFLAGS
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 428
    Points : 170
    Points
    170
    Par défaut
    Ok merci beaucoup pour vos éclaircissements

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 428
    Points : 170
    Points
    170
    Par défaut
    J'ai modifié 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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
     
    CFLAGS = -c -O3 -Wextra -Wall -Werror -UDEBUG
    CCCOM=$(CC) $(CFLAGS)
    LDLIBS=-lSDLmain -lSDL -lcomdlg32
    LDFLAGS=-L/usr/local/lib $(LDLIBS)
    EXEC=life
    SRC =$(wildcard *.c)
    OBJS=$(SRC:.c=.o)
     
     
    all :  depend $(EXEC)
     
     
    $(EXEC) : $(OBJS)
    	$(CC) $^ -o $@ $(LDFLAGS)
     
    %.o : %.c 
    	$(CCCOM) $<
     
     
    .PHONY : clean depend
     
     
    depend :
    	 makedepend  -Y $(SRC) 2>/dev/null
     
    clean : 
    	$(RM)  $(OBJS) *~ *.stckdump *.exe \#*\#
     
    mrproper : clean
    	$(RM) $(EXEC) #remove all
     
     
     
     
    # DO NOT DELETE
     
    cell.o: cell.h global.h tools.h loadSprites.h event.h font.h menu.h render.h
    cell.o: frame.h scanline.h rules.h
    event.o: event.h global.h tools.h cell.h loadSprites.h scanline.h rules.h
    event.o: font.h menu.h render.h frame.h
    font.o: font.h tools.h loadSprites.h global.h cell.h event.h render.h frame.h
    font.o: scanline.h rules.h menu.h
    frame.o: frame.h tools.h cell.h global.h loadSprites.h event.h font.h menu.h
    frame.o: render.h scanline.h rules.h
    global.o: global.h tools.h
    loadSprites.o: loadSprites.h global.h tools.h cell.h event.h font.h menu.h
    loadSprites.o: render.h frame.h scanline.h rules.h
    main.o: global.h tools.h event.h cell.h loadSprites.h scanline.h rules.h
    main.o: font.h menu.h render.h frame.h preca.h
    menu.o: menu.h global.h tools.h font.h loadSprites.h cell.h event.h render.h
    menu.o: frame.h scanline.h rules.h
    preca.o: preca.h global.h tools.h
    render.o: render.h global.h tools.h frame.h cell.h loadSprites.h event.h
    render.o: font.h menu.h scanline.h rules.h
    rules.o: rules.h global.h tools.h font.h loadSprites.h cell.h event.h
    rules.o: render.h frame.h scanline.h menu.h
    scanline.o: scanline.h global.h tools.h cell.h loadSprites.h event.h font.h
    scanline.o: menu.h render.h frame.h rules.h
    tools.o: tools.h
    Je viens de remarqué que quand makedepend crée la liste des .h il me met tous les .h dans le fichier .o
    Par exemple : scanline.o ne devrait pas avoir 11 .h mais 3 .h.
    C'est peut être à cause de ça que si on modifie un seul .h que sa recompile tout.

  6. #6
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 186
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 186
    Points : 17 126
    Points
    17 126
    Par défaut
    Ca, c'est parce que les .h en incluent d'autres
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 428
    Points : 170
    Points
    170
    Par défaut
    Il me semble pas car si je ne met pas makedepend et que je met ma liste des .o et des .h comme ci-dessous ça marche, je n'ai aucun problème de compilation et sa me recompile juste les fichiers qui ont été modifié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    main.o : global.h tools.h  event.h loadSprites.h menu.h font.h frame.h preca.h render.h cell.h scanline.h rules.h
    global.o : global.h tools.h
    tools.o : tools.h global.h
    event.o : event.h global.h cell.h font.h 
    loadSprites.o : loadSprites.h cell.h
    menu.o : menu.h tools.h font.h global.h event.h
    font.o : font.h tools.h loadSprites.h menu.h
    frame.o : frame.h tools.h cell.h
    preca.o : preca.h global.h
    render.o : render.h frame.h
    cell.o : cell.h global.h loadSprites.h tools.h event.h scanline.h rules.h menu.h
    scanline.o : scanline.h global.h cell.h
    rules.o : rules.h global.h tools.h font.h event.h cell.h menu.h
    makedepend devrait me sortir cette liste ci-dessus mais j'ai cherché un paquet de temps sur internet lu beaucoup de truc et essayé plein d'autre façon de faire mais rien ni fait sa recompile toujours tous au lieu de me recompiler juste les fichiers qui ont été modifiés.

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

Discussions similaires

  1. makefile commande makedepend
    Par hbx360 dans le forum Systèmes de compilation
    Réponses: 0
    Dernier message: 01/05/2017, 11h16
  2. Recompiler tout dans des classes
    Par erikiller dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 06/09/2009, 01h15
  3. une commande qui change tout!
    Par GR3lh442kR dans le forum SDL
    Réponses: 4
    Dernier message: 02/09/2009, 21h28
  4. [Réseau] Cibler la commande « Ping » sur tout le réseau
    Par Furius dans le forum Développement
    Réponses: 4
    Dernier message: 08/09/2006, 21h11
  5. Compiler un module sans recompiler tout le noyau
    Par khayyam90 dans le forum Administration système
    Réponses: 7
    Dernier message: 22/09/2005, 04h16

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