2011-10-26 3 views
2

J'ai un fichier make qui utilise les options -MMD -MP lors de l'appel de g ++. Cela crée les fichiers de dépendance .d qui ressemble à quelque chose comme ceci:Comment utiliser les en-têtes précompilés avec gcc et make?

blah.o: header1.h header2.h 

Maintenant, je suis en train d'ajouter le support d'en-tête précompilé, et je voudrais avoir une règle similaire à:

$(OUT_DIR)/%.h.pch: $(SRC_DIR)/%.h 
    g++ -c $< -o [email protected] 

et je voudrais les fichiers .d à ressembler à ceci:

blah.o: header1.h.pch header2.h.pch 

de cette façon, les fichiers .o dépendent des en-têtes précompilés, et les en-têtes précompilés dépendent des en-têtes. De cette façon, je peux être sûr que tous les en-têtes précompilés sont créés AVANT que le fichier .cpp dépendant soit compilé. Mon problème est que je n'arrive pas à trouver un moyen de créer des fichiers de dépendance g ++ avec les extensions * .pch. Tout ce que j'essaie produit toujours les extensions .h typiques. Quelqu'un a des idées?

Répondre

3

Que diriez-vous d'ajouter une commande

sed -e 's/.h /.h.pch /g' -e 's/.h$/.h.pch/' $*.d > $*.dd 

(Vous pouvez modifier foo.d en place si vous préférez.)

+0

I, en fait, a fait cela comme une "solution temporaire". Cependant, cela peut devenir une solution plus permanente. – user545226

Questions connexes