Forum Programmation.c++ Make et en-tête précompilée

Posté par  .
Étiquettes : aucune
0
1
avr.
2010
Cher Forum,

Je n’arrive pas à m’expliquer le comportement de make suivant :

Cas qui marche :
STABLE_HEADER = stable.h
STABLE_OBJECT = $(STABLE_HEADER:%.h=%.h.gch)

$(STABLE_OBJECT): $(STABLE_HEADER)
 $(CXX) -Winvalid-pch $(WFLAGS) $(CFLAGS) $(OFLAGS) $@ $< $(IFLAGS)

%.o: %.c $(STABLE_OBJECT)
 $(CXX) $(WFLAGS) $(CFLAGS) $(OFLAGS) $@ $*.c $(IFLAGS)

que j’ai voulu transformer en :
STABLE_HEADER = stable.h
STABLE_OBJECT = $(STABLE_HEADER:%.h=%.h.gch)

%.h.gch: %.h
 $(CXX) -Winvalid-pch $(WFLAGS) $(CFLAGS) $(OFLAGS) $@ $< $(IFLAGS)

%.o: %.c $(STABLE_OBJECT)
 $(CXX) $(WFLAGS) $(CFLAGS) $(OFLAGS) $@ $*.c $(IFLAGS)

Et la bizarrement, cela ne marche pas.

Quelqu’un aurait-il une explication, car la je sèche !
  • # 1 Avril

    Posté par  . Évalué à 1.

    C'est make qui te fait un poisson d'avril
    • [^] # Re: 1 Avril

      Posté par  . Évalué à 4.

      c'est parce que STABLE veut dire "étable" en anglais, et du coup quand tu lances le construire dans le coquillage eh bien le cheval n'est pas content.
  • # plus de détails

    Posté par  . Évalué à 2.

    ça marche pas "comment" ?
    quel est le résultat de la commande ?

    sinon, je ne suis pas trop sûr de que signifie la syntaxe %.h.gch: %.h
    j'aurais plutôt écrit
    .h.gch:
    ou
    %.gch: %h

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.