project-structuring

___ qstnhdr ___ Projektverzeichnisstruktur mit Komponenten von Drittanbietern ___ tag123delphi ___ Delphi ist eine Sprache für die schnelle Entwicklung von nativen Windows-, macOS-, Linux-, iOS- und Android-Anwendungen mithilfe von Object Pascal. Der Name bezieht sich sowohl auf die Delphi-Sprache als auch auf deren Bibliotheken, Compiler und IDE, mit denen Delphi-Projekte bearbeitet und debuggt werden können. ___ answer5749142 ___
  1. Sie müssen das Paket nur mit dem Delphi-Kommandozeilen-Compiler kompilieren. Wenn sich der Delphi-Bin-Pfad in Ihrem %code% befindet, müssen Sie den Installationspfad nicht fest codieren. Wenn Ihr Build-System aus der Registrierung lesen kann, erhalten Sie den Pfad z. %code% (in diesem Fall Delphi 2009).

  2. Ich würde einen weiteren Zweig %code% mit Subbranches für jedes Paket hinzufügen. Vermische sie nicht mit deinen Projekten.

  3. Nach meiner Erfahrung ist es am besten, sie im Delphi-Ziel zu belassen (wo es von der Delphi-Version abhängt).

___ answer5751319 ___

Update: Bemerken Sie die Installation von der Befehlszeile Anfordern eines Teils der Frage.

Sie können nicht wirklich über die Befehlszeile installieren, aber es wäre einfach, etwas zu bauen das hat das gemacht. Sie können die Pakete mit DCC32.EXE kompilieren.

Die Installation von Komponenten wird durch Registrierungseinträge gesteuert. Der Speicherort in der Registrierung ist für jede Version von Delphi anders, aber er folgt demselben Grundmuster. Beispiele:

Delphi 2007 %Code% Delphi XE 'HKEY_CURRENT_USER \ Software \ Embarcadero \ BDS \ 8.0 \ Bekannte Pakete'

Wir aktualisieren dies mit FinalBuilder, nachdem wir alle Komponenten von Drittanbietern erstellt haben. Es macht es einfacher, jeden Entwickler synchron zu halten.

Wie bei der Verzeichnisstruktur denke ich über die Versionskontrolle im Voraus nach und mache folgendes:

Stammverzeichnis ...

%Vor%

Dies ermöglicht mir, Zweige in einem einfachen Format zu erstellen.

%Vor%

Von dort mache ich folgendes:

Ich benutze ein gemeinsames Verzeichnis für \ Bin und \ DCU, da ich eine Menge Paketentwicklung mache Viele davon müssen zur Entwurfszeit geladen werden. Dies verhindert, dass viele hinzugefügt werden müssen Verzeichnisse zum Systempfad, um Delphi glücklich zu machen.

%Vor%

Dies kann verbessert werden, wenn es so sein muss:

%Vor%

Für jedes Projekt mache ich das, obwohl ich oft mehr als ein Projekt in dasselbe setze Verzeichnis, wenn die meisten auf den gleichen Code beruhen.

%Vor%

Endlich für Komponenten und Code, die für verschiedene Projekte gelten.

%Vor%

Ich mache es so, also weiß ich alles, was meine Version X meiner Anwendung ausmacht, indem ich nur die Versionssteuerrevisionsnummer verwende.

Um das zu beenden, erstelle ich eine Umgebungsvariable für

C: \ DEV \ TRUNK \

Dann verwende ich die Umgebungsvariable im Pfad der Systembibliothek. So:

%Vor%

Wenn ich dann die Zweige wechseln muss, kann ich die Umgebungsvariable Relaunch Delphi und alles, was diese Version der Codebasis verwendet, ändern.

    
___ answer5749165 ___

1: Ja und nein, Sie können eigene Komponenten entwerfen, die über die Befehlszeile installiert werden sollen (wobei "von der Befehlszeile" bedeutet, dass sie programmatisch installiert werden) könnte das Werkzeug schreiben müssen). Komponenten von Drittanbietern werden in der Regel mit einem Installationsprogramm geliefert, das die Komponenten selbst installiert und registriert. Theoretisch können Sie alles, was der Installer tut, automatisieren und die Komponente für den eigenen Gebrauch neu verpacken, aber dabei stoßen Sie möglicherweise auf rechtliche Barrieren.

2: Komponenten von Drittanbietern sind nicht an ein Projekt gebunden. Das Speichern dieser Dateien im Projektverzeichnis ist keine gute Idee. Was passiert, wenn Sie dieselben Komponenten in einem anderen Projekt wiederverwenden? Kopieren Sie alle Quelldateien in das neue Projekt? Für meine eigene Arbeit habe ich alle Komponenten von Drittanbietern in einem Ordner getrennt von jedem Projektverzeichnis installiert, und ich behalte diesen Ordner unter Versionskontrolle.

3: Die Verwendung eines separaten Ausgabeverzeichnisses für jedes Projekt ist eine gute Idee, es macht die Verwendung der bedingten Kompilierung viel einfacher. Ich würde separate Ausgabeverzeichnisse für Debug und Release vorschlagen. Über Drittanbieter-BPLs sind sie auch nicht Teil des Projekts, weil kein einzelnes Projekt sie "besitzt".

    
___ tag123buildautomation ___ Buildautomatisierung ist die Aufgabe, Aufgaben wie Kompilieren, Paketieren, Ausführen von Tests, Deployment usw. zu scripten oder zu automatisieren. ___ qstntxt ___

Ich muss alte, in Delphi geschriebene Software pflegen. Der Quellbaum ist ein echtes Durcheinander. Ich versuche, zwei Dinge zu tun: eine saubere Verzeichnisstruktur zu schaffen und einen automatisierten Build-Prozess einzurichten.

Im Moment habe ich folgenden Verzeichnisbaum erstellt

%Vor% Das Verzeichnis

%code% enthält die Dateien %code% und %code% und %code% . Verschiedene Ressourcen (Symbole, Bilder und Schriftarten) befinden sich im Verzeichnis %code% . %code% wird verwendet, um verschiedene Umgebungen für Debugging-Zwecke zu erstellen. IDE wurde eingerichtet, um project.exe in dieses Verzeichnis zu erstellen. Build-Skripte werden im Ordner %code% gespeichert. Diese Skripte erzeugen Produktverteilung (mit und ohne Debug-Informationen in exe) in %code% und %code% -Ordner mit Hilfe von %code% . %code% wird verwendet, um dcu-Dateien während des Build-Prozesses innerhalb der IDE oder im Build-Skript zu speichern.

Es gibt einen kleinen Fehler in meinem Ansatz. Ich kann nicht mit einem neuen Computer beginnen, den Code aus meinem Repo checken, mit dem Erstellen des Skripts beginnen und die bereitwillige Verwendung des Projekts erhalten. Ich muss zuerst die IDE öffnen, benötigte Komponenten installieren (z. B. %code% und %code% ), Bibliothekspfade einrichten und so weiter. Erst danach kann ich meine Gebäudeskripte ausführen.

Es war bis letzte Woche kein großes Problem. Ich habe 3rd-Party-Komponente geändert, um einen Fehler zu beheben (diese Komponente wird nicht mehr gepflegt :-(), also muss ich Code dieser Komponente zur Struktur meines Projekts hinzufügen. An dieser Stelle, wenn ich auschecken werde Das Repo muss ich überprüfen, ob es Änderungen im Code von 3rd-Party-Bibliotheken gab. Wenn Code von Bibliotheken geändert wurde, muss ich Komponenten neu kompilieren und neu installieren.

Fragen

  1. Gibt es eine Möglichkeit, Komponenten in Delphi 7 über die Befehlszeile neu zu installieren? Gibt es eine Möglichkeit, dies zu tun, ohne den Installationspfad von D7 fest zu codieren?
  2. Wie würden Sie Code von Drittkomponenten in der Projekthierarchie speichern?
  3. Wo sollte ich %code% und %code% platzieren, die während des Builds von Komponenten erzeugt werden? Sollte ich sie bei %code% platzieren? Oder es ist besser, die Ausgabe an einen anderen Ort zu platzieren (überschreiben Sie nicht die Delphi-Einstellungen), aber ändern Sie den Bibliothekspfad in der Projektkonfiguration?
___ tag123components ___ Eine Komponente in der Unified Modeling Language "stellt einen modularen Teil eines Systems dar, der seinen Inhalt kapselt und dessen Manifestation innerhalb seiner Umgebung ersetzbar ist. Eine Komponente definiert ihr Verhalten in Bezug auf bereitgestellte und erforderliche Schnittstellen". Das beste Beispiel für eine Komponente finden Sie in ActionScript-Flash, Flex sdks. Dort haben Sie UI-Komponenten wie Schaltflächen, Labels, DataGrids, Diagramme, die wiederverwendbar sind, verteilbar usw. ___ tag123projectructuring ___ hilf uns dieses Wiki zu bearbeiten ___
3
Antworten

Projektverzeichnisstruktur mit Komponenten von Drittanbietern

Ich muss alte, in Delphi geschriebene Software pflegen. Der Quellbaum ist ein echtes Durcheinander. Ich versuche, zwei Dinge zu tun: eine saubere Verzeichnisstruktur zu schaffen und einen automatisierten Build-Prozess einzurichten. Im Moment...
21.04.2011, 19:28