2010-11-02 40 views
3

Visual Studio C++ projet lib projet est configuré pour utiliser les en-têtes précompilés stdafx.cpp est mis à créer en-tête précompiléEn utilisant des en-têtes précompilés, les changements de fichiers d'en-tête ne sont pas détectés, attendus?

J'ai un fichier d'en-tête, MyClass.h Si je construis, puis faire un changement à MyClass. h qui devrait échouer à compiler, la compilation réussit toujours. Si je fais une reconstruction, ou si je fais une modification à un fichier cpp qui inclut "MyClass.h", alors la compilation échoue comme prévu.

Est-ce attendu parce que j'utilise des en-têtes précompilés? Y a-t-il un moyen de le réparer afin qu'un buid 2nds prenne en charge les changements d'en-tête sans désactiver les en-têtes précompilés?

+0

Etes-vous sûr que vous enregistrez vos modifications avant d'essayer de recompiler? –

+0

Ce n'est pas normal. Il n'y a pas assez d'informations dans votre question pour nous aider à diagnostiquer pourquoi cela ne fonctionne pas correctement. –

+1

On dirait que le problème est dû au fait que "Enable Minimal Rebuild" a été défini sur Oui (/ Gm) Lorsque je l'ai défini sur Non, les modifications du fichier d'en-tête ont été ramassées –

Répondre

3

Assurez-vous que le fichier d'en-tête que vous modifiez est référencé par votre projet dans l'Explorateur de solutions. Si c'est le cas, la construction complète devrait se déclencher quand elle est modifiée.

+0

Eh bien, il semble que ce ne soit pas la cause de ses commentaires (je ne suis pas sûr de l'option "Activer Reconstruire Minimalement "faire exactement) mais c'est un problème fréquent qui a les mêmes symptômes: +1. – n1ckp

0

Etes-vous sûr que stdafx.cpp inclut l'en-tête en question?

0

VisualStudio peut souvent être sacrément stupide par rapport aux changements. Cela peut aller dans un sens ou dans l'autre, mais d'habitude ça va comme vous le faites.

Je l'ai eu attraper sur les changements dans un en-tête utilisé par un fichier, mais pas le fait qu'il est utilisé dans d'autres. Donc, il compile l'un mais pas les autres. Ensuite, je reçois des erreurs de liens vraiment bizarres.

Cela pourrait bien sûr toujours être votre propre faute, mais VS est, en fait, notoirement stupide. Parfois, une reconstruction complète permettra de résoudre le problème de manière permanente, jusqu'à la prochaine fois. D'autres fois, vous avez en quelque sorte arrosé le fichier de projet et j'espère que vous pouvez revenir à l'original (comme un serveur source). "Undo" le plus souvent ne défait pas ce genre de fubar.

Je l'ai noté plusieurs fois sans avoir besoin d'être un en-tête qui est dans l'en-tête précompilé. Il semble être quelque peu aléatoire, mais une corrélation plus commune est que l'en-tête est plein de modèles. VS est juste des modèles wrt retardés.

2

Dans les propriétés du projet, définissez « Activer Minimal Rebuild » No

+0

J'ai eu le même problème que l'affiche originale comme changé en fichiers .H ne serait pas ramassé pour la compilation, avec et sans en-têtes précompilés. Désactiver les reconstructions minimales a résolu ce problème majeur pour moi. Je vous remercie. –