8
votes

Structure du répertoire de projet avec composants tiers

Je dois maintenir un ancien logiciel écrit à Delphi. L'arbre source est un vrai désordre. J'essaie de faire 2 choses: faire une structure de répertoire propre et mettre en place un processus de construction automatisé.

Désormais, j'ai produit après l'arborescence de répertoire xxx

\ src répertoire *. Pas et *. DFM fichiers et projet.dpr . Diverses ressources (icônes, images et polices) sont résident dans le répertoire \ res . \ env est utilisé pour créer divers environnements à des fins de débogage. IDE a été réglé pour construire projet.exe dans ce dir. Les scripts de construction sont stockés dans le dossier Build . Ces scripts produisent une distribution de produit (avec et sans informations de débogage dans EXE) dans dist \ version et dist \ débogage dossiers à l'aide de dcc32.exe . Build \ Sortie est utilisé pour enregistrer des fichiers DCU pendant le processus de construction à l'intérieur de l'IDE ou de la construction intérieure.

Il y a un peu de faille dans mon approche. Je ne peux pas commencer par un ordinateur frais, code de caisse de mon repo, démarrez le script de construction et recevoir une diribranchution prête à utiliser le projet. J'ai besoin d'ouvrir d'abord IDE, installez les composants requis (E.G. rxlib et MEMOEX ), configurez les chemins de la bibliothèque, etc. Seulement après ces étapes, je peux exécuter mes scripts de construction.

Ce n'était pas un gros problème avant la semaine dernière. J'ai modifié le composant 3ème partie modifié afin de corriger un bogue (ce composant n'est plus entretenu :-(), je dois donc ajouter du code de ce composant à la structure de mon projet. À ce stade si je vais vérifier à partir de Le repo J'ai besoin de vérifier s'il y avait des changements de code de 3e Parti libs. Si le code de Libs a été modifié, j'ai besoin de recompiler des composants et de les réinstaller.

questions

  1. Y a-t-il un moyen de réinstaller les composants de Delphi 7 de la ligne de commande? Y a-t-il un moyen de le faire sans trajet d'installation de codage de la D7?
  2. Comment stockeriez-vous le code des composants de la troisième partie dans l'arbre de projet?
  3. Où dois-je placer bpl et DCU qui sera produit lors de la construction de composants. Devrais-je les placer à Project \ Build \ Sortie ? Ou il sera préférable de placer une sortie à un autre emplacement (ne remplacez pas les paramètres Delphi), mais modifiez le chemin de la bibliothèque dans la configuration du projet?

0 commentaires

3 Réponses :


6
votes
  1. Il vous suffit de compiler le colis avec le compilateur Delphi Commandline. Si le chemin Delphi Bin est dans votre trajet , vous n'avez pas besoin de papier dur le chemin d'installation. Si votre système de construction est capable de lire à partir du registre, vous obtenez le chemin E.G. HKEY_LOCAL_MACHINE \ LOGICIEL \ CODEGEAR \ BDS \ 6.0 \ rootdir (Delphi 2009 Dans ce cas).

  2. J'ajouterais une autre branche composants avec des sous-branches pour chaque colis. Ne les mélangez pas avec vos projets.

  3. de mon expérience La meilleure pratique consiste à les garder dans la destination DELPHI (où dépend de la version Delphi).


4 commentaires

Si vous recommandez d'ajouter composants comme sous-modoudules (subrepos en termes de mercurial), il serait préférable de stocker DCU et bpl quelque part à l'intérieur de leur repos. N'est-ce pas? Dans d'autres cas, il fassera un processus de construction pour une autre application qui utilise le même composant mais une autre version.


Je veux dire que si chaque composant réside dans composant \ src et que la construction est compilera dcu et bpl à < Code> Composant \ Build . Ces fichiers DCU et BPL seront utilisés pour installer le composant dans l'IDE (temps de conception). Entre-temps, mon projet.dof sera modifié pour utiliser la trajectoire de bibliothèque .. \ composants \ composant \ src . Lors de la construction de l'outil de projet recherchera dans ce répertoire et de générer des unités du composant à DCU et les stockera à Project \ Build \ Sortie .


@Konstantin Mikhaylov, votre point de vue sur "Installation Composant" pourrait être un peu désactivé. Les composants sont installés en tant que packages (DCP), et il n'y a qu'une seule liste de packages installés, la liste n'est pas "par projet". Les composants ne sont pas installés dans l'IDE lorsque vous ouvrez un projet et qu'ils ne sont pas modifiés lorsque vous fermez le projet et ouvrez un autre. En fait, l'IDE Delphi vous permet d'ouvrir plusieurs projets à la fois! C'est pourquoi, dans ma réponse, je dis "Aucun projet possède 3ème composants de la soirée", je ne recommande donc pas de les mettre sous la version de la version dans le même répertoire avec le projet actuel [...]


@Konstantin Mikhaylov, [...] Si les composants tiers ne font pas partie du projet, vous n'avez pas le problème de correspondance des composants tiers de la 3ème partie aux oncences utilisées dans le projet. En fait, vous faites, mais cela ne peut pas être résolu dans le cadre du projet. Une fois que c'est à court de temps, vous voudrez peut-être reconsidérer votre option pour stocker des fichiers DCU et BPL dans Mercurial. J'utilise aussi mercurial et sa grille; Mais cela n'aime pas les fichiers binaires et DCU, BPL et EXE sont tous des fichiers binaires. Je ne les stocke pas dans VCS. Dans le cadre de toute libération, je fais toujours "construire tous" afin que la DCU n'a pas de valeur.



3
votes

1: oui et non, vous pouvez concevoir vos propres composants à installer à partir de la ligne de commande (où "à partir de la ligne de commande" signifie les installer de manière programmative si vous voulez vraiment la ligne de commande, vous pourrait avoir besoin d'écrire l'outil). Les composants 3ème partie sont généralement accompagnés d'un installateur qui fait plus d'informations et enregistrez les composants eux-mêmes. Théoriquement, vous pouvez automatiser tout ce que l'installateur fait et recomposer essentiellement le composant de votre propre usage, mais vous pourriez rencontrer des obstacles juridiques.

2: Les composants 3ème partie ne sont pas liés à un projet. Stocker que ces fichiers dans le répertoire de projet n'est pas une bonne idée. Que se passe-t-il lorsque vous réutilisez les mêmes composants dans un autre projet? Copiez-vous tous les fichiers source du nouveau projet? Pour mon propre travail, j'ai installé tous les composants 3ème partie dans un dossier, séparé de n'importe quel répertoire de projet et je garde ce dossier sous contrôle de version.

3: L'utilisation d'un répertoire de sortie séparé pour chaque projet est une bonne idée, il facilitera beaucoup la compilation conditionnelle. Je suggérerais de séparer des annuaires de sortie pour débogage et libération. A propos de la tierce de Bpl Bpl, ils ne font pas non plus partie du projet car aucun projet unique "ne les possède".


1 commentaires

Je doute qu'il y ait une barrière juridique, pour installer des composants de manière automatisée. Nous utilisons finalBuilder pour tout reconstruire, y compris les composants tiers. Ensuite, nous avons écrit un script pour les installer à Delphi. La principale raison est de garder des versions des composants tiers de Sync AMOUNG 10 Différents développeurs sont désormais vraiment très faciles ... SVN Mise à jour. Exécutez le script finalBuilder.



4
votes

mise à jour: strong> remarqua l'installation de la demande de ligne de commande une partie de la question.

Vous ne pouvez pas vraiment installer de la ligne de commande, mais il serait facile de construire quelque chose ça a fait ça. Vous pouvez compiler les packages à l'aide de DCC32.exe. P>

L'installation de composants est contrôlée par des entrées de registre. L'emplacement dans le registre est différent pour chaque version de Delphi, mais elle suive le même modèle de base. Exemples: P>

Delphi 2007 HKEY_CURRENT_USER \ LOGICIEL \ BORLAND \ BDS \ 5.0 \ Packages connus CODE> Delphi Xe 'HKEY_CURRENT_USER \ Software \ Embarcadero \ BDS \ 8.0 \ Packages connus' P>

Nous mettons à jour cela à l'aide de FinalBuilder, après avoir construit tous les composants tiers. Il est plus facile de conserver chaque développeur en synchronisation. P>

comme pour la structure de répertoire, je pense à la version de la version à l'avance et effectuez les éléments suivants. P>

Répertoire racine ... P >

%MYCODE%components\3rdParty1;%MYCODE%components\3rdParty2\


1 commentaires

Belles informations. C'est le genre d'outil que je garde le sens de construire. Ensuite, je vais vérifier l'installateur JVCL qui a commencé comme ça, et je pense que je vais peut-être simplement modifier le programme d'installation JVCL.