2010-05-03 6 views
1

J'ai un projet C++, j'utilise Bakefile pour le processus de construction, Makefiles sont générés pour msvc, mingw, gnu etc pour le support multi-plateforme.Considérant les fichiers modifiés pour la reconstruction

Maintenant, le problème est que si je change les fichiers .h (qui sont inclus dans d'autres fichiers .cpp) et effectue une reconstruction ne recompile pas les fichiers modifiés. Mais changer n'importe quel fichier .cpp est recompilé.

En fonction de l'horodatage modifié de tout fichier inclus dans le projet, je m'attends à prendre en compte ce fichier pour la reconstruction. Est-ce que je manque quelque chose qui doit être ajouté comme balise dans les fichiers .bkl?

S'il vous plaît aider. Bakefile lui-même ne gère que les dépendances entre les cibles.

+0

Je ne suis pas familier avec Bakefile, mais ce que vous décrivez est un problème de gestion des dépendances - vos makefiles ne savent pas que 'X.h' est une condition préalable de' X.o'. Je suggère 1) en regardant le makefile pour voir si Xh est une préq de Xo, 2) vérifiant les docs et les fichiers .blk pour voir comment Bakefile devrait savoir au sujet de la dépendance, 3) regardant dans la génération d'auto-dépendance, et 4) retrait vers HelloWorld.cpp et HelloWorld.h. – Beta

+0

Merci pour le commentaire. J'essaie de regarder les fichiers bxl de wxWidgets pour voir si je peux en avoir une idée. Jusqu'à présent, pas de chance. – harik

Répondre

1

Les dépendances entre les fichiers sources et les en-têtes changent trop fréquemment pour être écrites dans des fichiers makefile. Ce type de dépendances est géré par le compilateur et make, qui doivent coopérer. GCC et GNU supportent cela très bien (et les formats gnu ou autoconf de Bakefile génèrent des fichiers makefiles avec un suivi de deps approprié). Je suppose que votre plainte est à propos de nmake (format msvc de Bakefile) en particulier, non?

Vous n'avez pas de chance ici, j'ai peur - nmake est trop limité et ne supporte pas les dépendances dynamiques. Je recommande de générer et d'utiliser des fichiers de projet à la place, à la fois l'IDE et vcbuild dépiste les dépendances.

+0

Merci 'vslavik' pour la réponse. Je dois vérifier GCC sur mon Ubuntu (j'espère que ça marche), mais mingw make ne reconstruit pas non plus les fichiers modifiés. Comme vous avez suggéré la création de fichiers de projet ressemble seulement à l'option avec MSVC. – harik

+0

Les fichiers makefiles de MinGW générés par Bakefile suivent correctement les dépendances - voir les fichiers * .d créés lors de la construction. Donc, si vous rencontrez des problèmes, ils peuvent être ailleurs, comme dans une mauvaise horloge système. (En tant qu'auteur principal de Bakefile, j'en suis très sûr, si vous croyez que le format 'mingw' est cassé, j'apprécierais beaucoup un rapport de bug sur http://www.bakefile.org/newticket) –

Questions connexes