Je vais lancer un projet de logiciel à grande échelle impliquant une interface graphique multi-plateforme et un grand nombre de calculs croisés. Je prévois d'écrire la plupart des back-end de l'application en C++ et CUDA, et l'interface graphique en Qt4. Je prévois d'utiliser Make comme mon système de construction. Ce sera un projet qui n'aura que deux développeurs, et qui finira probablement par être un projet open source une fois que je serai relativement loin avec.Conseils/Ressources pour les projets de logiciel multiplateformes à grande échelle
Ma principale question est, est-ce que quelqu'un a des conseils/ressources pour développer l'architecture derrière le logiciel.
- Quelle serait une bonne façon de structurer vos fichiers? (code crunching number dans un dossier séparé que le code gui, qui est séparé des exécutables compilés, ou autre chose?)
- Comment le système de construction fonctionnerait-il pour les logiciels multiplateformes? Aurais-je besoin de configurer un système de construction différent pour chaque plate-forme, ou pourrais-je créer un "makefile" commun qui se construirait différemment en fonction de la plateforme qui l'invoquerait?
- De quels types de modifications aurais-je besoin pour faire en sorte que mon code soit correctement construit sur toutes les plateformes (directives du pré-processeur, etc ...)?
- Comment est-ce que quelqu'un gère le contrôle de révision pour de grands projets et l'intègre dans le système de construction afin que j'obtienne des numéros Version.Revision.Build qui se mettent à jour chaque fois que je construis mon projet?
J'ai été découragé par le fait que mon collège que je suis sur le point de terminer ne couvre presque rien de tout cela. À ce stade, j'ai fait beaucoup de recherches Google avec peu de chance sur ce dont j'ai besoin. Je ne demande pas à être nourri à la cuillère, je serais parfaitement content avec des liens vers des livres ou des sites web relatifs à cela.
J'ai fait la plupart de ces choses séparément, mais je n'ai jamais essayé de tout combiner en un seul gros paquet.
Quelqu'un peut-il recommander Release It!: Design and Deploy Production-Ready Software pour ce que je me renseigne?
http://en.wikipedia.org/wiki/GNU_build_system – Anycorn
Quelques Conseils sur les bibliothèques: (a) essayez d'obtenir autant de bibliothèques que possible comme code source et non binaires, (b) vérifiez les fichiers d'installation pertinents pour toutes les bibliothèques dans votre dépôt, (c) écrivez * des instructions de construction très prudentes pour chaque combinaison bibliothèque/plate-forme, de sorte qu'il n'y a aucune conjecture impliquée dans le processus de construction. Et sur une note séparée, soyez extraordinairement prudent pour éviter, par ex. chemins de codage en dur ou en s'appuyant sur les DLL étant dans le répertoire système de votre ordinateur, etc. Le but est de le rendre parfaitement portable entre les ordinateurs. –
Si vous utilisez CMake (comme le suggérait Moo-Juice), cela vous facilitera la vie car il vous permettra de générer la solution Makefile/Visual Studio appropriée sur chaque plate-forme. Vous ne voulez pas entrer dans un Makefile séparé sur chaque plate-forme - c'est juste douloureux :) –