2010-05-06 11 views
2

Dans une solution C++ volumineuse, existe-t-il un moyen standard pour séparer les fichiers d'inclusion nécessaires pour créer une DLL intermédiaire et les fichiers d'inclusion qui seront utilisés par les clients DLL?Existe-t-il une convention pour l'organisation de l'include/exports dans un grand projet C++?

Nous avons regroupé tous les fichiers inclus dans un dossier appelé Interface (pour l'interface DLL), mais les clients doivent soit inclure le dossier d'interface par défaut comprennent le dossier ou tapez le nom complet comme:

#include "ProjectName/Interface/myinterface.h" 

Ne serait-il pas préférable de créer un dossier distinct appelé exportations où je créer un dossier appelé ProjectName et y mettre les fichiers d'inclusion? Alors que les clients seraient taper:

#include "ProjectName/myinterface.h" 

Si je fais la chose juste au-dessus, alors dois-je conserver les fichiers dans la solution et produire un événement post de construction (j'utilise 2K5 Visual Studio) pour copier les fichiers dans le dossier "export" (/ ProjectName /)? Ou est-il préférable de simplement inclure directement les fichiers de ce dossier dans mon projet (ce qui est plus direct et a moins de chances de causer des problèmes d'entretien?

Je suis plus à la recherche de conseils que pour une solution définitive.

Merci d'avoir lu!

Anthony

Répondre

3

Si une interface peut consister en plus d'un en-tête,

#include "ProjectName/Interface/header1.h" 

me semble meilleur.

+0

Je aime bien cela aussi, mais quand vous partagez le même arbre de développement, certaines personnes pourraient essayer de faire quelque chose comme: #include « ProjectName/notpartoftheinterface.h » et vous avez ensuite de les chasser pour enlever ceux-ci comprend. – BlueTrin

+2

@BlueTrin: Pourquoi ne pas conserver les fichiers d'interface publique dans un répertoire séparé des fichiers d'en-tête privés? –

+1

@BlueTrin: Ce que j'ai vu dans un projet, c'est que tous les détails d'implémentation (fichiers cpp et en-têtes privés) se trouvaient dans un dossier '_Imp' dans le dossier' Interface'. Vous pourriez gruger les sources et tout en dehors de 'blah' ne devrait pas inclure' '" blah/imp "..." '. Vous pouvez également prendre l'arborescence source, supprimer tous les dossiers' _Imp', et vous avez tous les en-têtes à distribuer avec tous les trucs privés supprimés.J'ai aimé ça. – sbi