Question

Nous avons un projet Wich utilise l'outil pour créer MIDL tête / IID spécifiques et les fichiers proxy. Ces fichiers sont compilés et liés avec le reste du projet en utilisant une étape de post construction qui appelle nmake.

Est-il possible d'utiliser les en-têtes précompilés avec Thos IDL fichiers générés? Comment puis-je injecter #include "stdafx-h" et de supprimer d'autres en-têtes inclus?

Était-ce utile?

La solution

Utilisez le option / FI (force Inclure): « Cette option a le même effet que spécifiant le fichier avec des guillemets doubles dans une directive #include sur la première ligne de chaque fichier source spécifié sur la ligne de commande, dans la variable d'environnement CL, ou dans un fichier de commande ».

Il ne supprimera pas les autres en-têtes, mais ce n'est pas nécessaire à la tête précompilé à utiliser ... Tous les en-têtes que vous souhaitez précompiler devraient être inclus par stdafx.h. Ensuite, à condition que les fichiers ont des gardes d'inclusion, il ne sera pas un problème quand ils sont à nouveau inclus dans les sources.

Exemple

Generated fichier a.cpp:

#include <a.h>
#include <b.h>
//rest of the code

Supposons que vous voulez effectuer une pré-compilation a.h et b.h. Ensuite, vous créez le fichier stdafx.h:

#include <a.h>
#include <b.h>

Et vous utilisez l'option / FI d'avoir cette stdafx.h inclus dans le premier fichier dans a.cpp. Si les fichiers a.h et b.h ont comprennent des gardes , les laissant dans a.cpp n'est pas un problème .. .

Autres conseils

"stdafx.h" est simplement une convention. Si vous savez que les fichiers source générés yout ont toujours un préfixe standard des en-têtes inclus, vous pouvez nommer le dernier d'entre eux dans le commutateur de /Yu (utilisation des en-têtes précompilés). Pour créer la PCH, créer un fichier .cpp unique avec seulement les en-têtes fixes et compiler avec ième /Yc.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top