2010-11-26 71 views
1

Je travaille actuellement sur un produit C++. Il a été conçu pour avoir une bonne flexibilité et a grandi de plus en plus. Maintenant, nous prévoyons de coopérer dans un projet où nous voudrions contribuer des parties du produit: certaines parties comme code source, certaines parties comme bibliothèques de liens statiques, certaines parties pas du tout. Je voudrais garder une version de chaque fichier source qui est utilisé dans les deux projets et éviter de ramifier le tout etc. Je me demandais donc ce dont j'avais besoin pour avoir le "produit complet" en interne avec tous les fichiers et aussi être capable d'extraire une partie de ces fichiers (de temps en temps) et passer ce sous-ensemble comme une unité de travail à d'autres. (Je suppose que nous pouvons faire en sorte que ces fichiers ne sont pas modifiés dans le projet de coopération, nous n'ajouter des choses là-bas.)Système "plugin statique" (via build system) en C++

Je suppose que je dois

  • une architecture logicielle qui est couplé de façon lâche de sorte que les parties peuvent être retiré sans casser le système. Je pense que le terme "statique" plugin est approprié ici parce que je pense que je peux apprendre des systèmes de plugin, mais je n'ai pas besoin d'avoir la capacité de les charger dynamiquement, ils peuvent être liés/construit de manière statique. J'espère que cela pourrait forcer mes collègues et moi à étendre le système en ajoutant une sorte de plugin au lieu d'insérer des classes ici et là, en introduisant un couplage entre les choses.
  • un système de construction qui me supporte avec la sélection des plugins pour construire et "libérer" de nouveaux sous-ensembles en extrayant seulement ce dont j'ai besoin.

Existe-t-il des ressources Internet pouvant vous aider? Quels sont les mots-clés à rechercher?

Avez-vous des suggestions pour gérer cela?

Répondre

4

Il y a une série intéressante d'articles de Dr. Dobbs que vous pourriez vouloir vérifier. Je me souviens qu'il supporte la liaison statique des plugins en plus de la liaison dynamique habituelle. Découvrez Building Your Own Plugin Framework.

Bonne chance!

0

Principalement, vous avez besoin quelque chose comme git:

http://github.com

pour gérer la source. Pour gérer les "plugins", statiques ou non, il peut être intéressant de regarder les systèmes existants qui le font déjà: je peux recommander d'examiner comment Python le fait (puisqu'il y a une API C bien spécifiée pour le gérer).

Le meilleur système de construction que je connaisse est .. Python. Forget fait :) Un préfabriqué est Erick Tryzelaars fbuild (disponible chez github). [Bien je pense que c'est le meilleur parce que je l'utilise:]