2009-01-07 13 views
1

Dans un makefile, j'ai la ligne suivante:Tous les fichiers .cpp dépendent de deux fichiers .h?

helper.cpp: dtds.h 

ce qui garantit que helper.cpp est reconstruit chaque fois dtds.h est changé. Cependant, je veux tous les fichiers du projet à reconstruire si l'une des deux autres fichiers d'en-tête change, un peu comme ceci:

*.cpp: h1.h h2.h 

Il est évident que cela ne fonctionnera pas, mais je ne sais pas la bonne façon d'obtenir NMake faire ce que je veux. Quelqu'un peut-il aider? Je ne veux pas avoir à spécifier manuellement que chaque fichier dépend de h1.h et h2.h.

Merci. (J'utilise nmake inclus avec Visual Studio 2005.)

Répondre

1

Merci pour votre aide, Christoph. J'ai essayé:

.cpp.obj: h1.h h2.h 

et a obtenu le message d'erreur utile:

makefile(58) : fatal error U1086: inference rule cannot have dependents 

J'ai fini par résoudre en faisant une liste des fichiers que je voulais compiler, puis ajouter la dépendance à l'ensemble liste.

fichiers = file1.obj file2.obj file3.obj $ (fichiers): h1.h h2.h

3

Essayez

%.cpp : h1.h h2.h 

qui fonctionne dans GNU make - aucune idée si nmake est compatible ...

Edit: Et btw : ne devrait pas être que

helper.o : dtds.h 

%.o : h1.h h2.h 

Après tout, vous ne voulez pas refaire le fichier .cpp (comment voulez-vous faire un fichier source?), mais recompiler ..

Édition2: Cochez la case NMAKE Reference. Selon this, quelque chose comme

.cpp.obj: h1.h h2.h 

pourrait fonctionner ...

+0

% .o ne semble pas travailler dans nmake, malheureusement. Et pour une raison quelconque, à la fois "helper.cpp: dtds.h" et "helper.obj: dtds.h" fonctionnent bien. – Colen

Questions connexes