2010-12-13 88 views
2

J'ai une bibliothèque simple qui génère des en-têtes pour moi et je souhaite enchaîner ceci dans un Makefile.Makefile qui peut déterminer à l'aide de gcc quels en-têtes sont manquants?

Si un fichier cpp contient un fichier d'en-tête qui n'existe pas, il doit le générer à partir d'un fichier source correspondant (si le fichier correspondant existe). Je n'arrive pas à comprendre comment faire ça.

J'ai essayé d'utiliser gcc -MM pour trouver les dépendances de chaque fichier .cpp à l'avance, mais cela échoue si un en-tête est manquant. J'ai besoin de savoir quels sont les fichiers manquants pour tenter de les régénérer.

Si je définis simplement un pré-requis pour les en-têtes pour tous les fichiers .cpp, il recompilera toujours tous mes fichiers .cpp bien sûr.

Des idées sur la façon dont je ne régénère que les en-têtes qui manquent?

Répondre

5

semble que la solution peut être trouvée en utilisant gcc:

http://gcc.gnu.org/onlinedocs/cpp/Invocation.html

-MG

En conjonction avec une option telle que -M demandant la dépendance génération, -MG suppose en-tête manquant fichiers sont générés et ajoute à la liste des dépendances sans provoquant une erreur.

0

Avez-vous essayé de définir une règle de modèle pour générer chaque en-tête, par ex.

%.hh: %.cpp 
    header_generator $^ > [email protected] 
+0

Ce n'est pas le problème. J'essaie de savoir quels en-têtes inclus dans les fichiers .cpp n'ont pas été construits pour créer une règle pour ces seuls en-têtes. – Dan