Projektorganisation

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
charlytango
Beiträge: 843
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Projektorganisation

Beitrag von charlytango »

Hi -- Wenn der Esel lange eingesperrt ist kommen nur blöde Ideen ;)

Wie organisiert ihr eure (größeren) Projekte auf der Festplatte?
Ideale Varianten wird es wohl kaum geben, aber vielleicht kann ich von den besten lernen 8)
Schließlich sind etliche Formulare, Units, Reports und andere Objekte wie SQL-Dateien, Logs, INI-Dateien etc zu verwalten.

Klar dass da auch Versionierung zum Einsatz kommt, allerdings interessiert mich eher die Trennung von Laufzeitumgebung und Programmierumgebung

zumindest die ppu und Object-Files lege ich strukturiert außerhalb der Projektstruktur ab, dann kann man auch mit anderen Lazarusversionen spielen ohne sich selbst ins Gehege zu kommen.

Paths -> Unit Output Directory: C:\Laz_Lib\<projektname>\$(TargetCPU)-$(TargetOS)-$(LazVer)

Code: Alles auswählen

Verzeichnisstruktur:
 
<projektname>
+---backup
|   \---zahlungswizard
+---ckeditor
+---dbupdate
+---dll
+---dm
+---export
+---forms
+---formsrep
+---images
|   +---16x16
|   +---32x32
|   \---64x64
+---import
+---log
+---reports
+---SQL
|   \---SQL Scripts
+---SQLite_outdated
+---units
\---_Temp
    \---backup


Dazu kommen noch etliche Verzeichnisse und Files die aus einem _Shared Verzeichnisbaum stammen und bei mir für viele/alle Projekte gleich verwendet werden.
Datenbankanbindung, Logging, Programmeinstellungen etc. etc.

Nun sind in diesem Verzeichnisbaum Entwicklungsumgebung und Programmumgebung wild durcheinander.
Man könnte zB die Verzeichnisse für die Entwicklung mit einem Underscore davor kennzeichnen.

Existiert da irgendwie eine elegantere Möglichkeit zB bei Pfadeinstellungen die ich nicht kenne ?

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6199
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Projektorganisation

Beitrag von af0815 »

Ich mache die Struktur eher tiefer als breiter und fange mit mit allgemeinen Sachen an, dann erst tiefer gehe ich in die Projekte. Nachdem ich mit GIT arbeite, ergibt sich eher die Struktur aus dem was mit Git sinnvoll machbar ist.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Warf
Beiträge: 1908
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Projektorganisation

Beitrag von Warf »

Also grundsätzliche Trenne ich die Logik von dem GUI, und damit habe ich dann praktisch diese Dateistruktur:

Code: Alles auswählen

Projekt Ordner
+ Projects
  // Hier liegen alle lpr, lpi, etc dateien drin
+ build
  + x86_64
    // architektur des build targets
    + debug
    + release
      // Hier wird das fertige programm hin kompiliert
+ configs
  // Hier liegen konfigurationsdatei defaults die vor dem ausführen in das build verzeichnis kopiert werden müssen
+ resources
  // binäre resourcen (also alles was keine konfigs sind)
  // Müssen eventuell vor dem ausführen in den entsprechenden build ordner kopiert werden
  + Images
    // hier liegen die bilder drin die ich benutze
+ Forms
  // Hier liegen meine Formulare drin (lfm und pas), eventuell in logisch zusammenhängenden unterordnern wenn zu viele
+ Units
  // Hier liegen die Logik Units drin
  + common
    // hier liegen die Units die an vielen stellen gebraucht werden, z.b. hab ich fast immer eine utilities.pas mit ein par utility funktionen


Das hat vor allem den vorteil das ich diese ordnerstruktur für mehrere zusammengehörige projekte benuzten kann. Z.B. Wenn ich einen server und einen Clienten schreibe, teilen die sich ja viele datentypen, die dann in Units/common liegen, die projekte haben jeweils eigene ordner in Projects und nur der client braucht Forms. Die unterschiedliche logik liegt dann in Units/Server bzw Units/Client

Ist natürlich nach unten beliebig erweiterbar, also in jedem ordner mach ich wenns zu viele dateien werden noch unterordner

Benutzeravatar
kupferstecher
Beiträge: 418
Registriert: Do 17. Nov 2016, 11:52

Re: Projektorganisation

Beitrag von kupferstecher »

Bei mir sieht das etwa so aus (Beispielprojekt Taschenrechner)

Code: Alles auswählen

 
Projekte
+---Taschenrechner
      + ... //diverse Ordner und Dateien die zum Projekt gehören, aber nicht versionsabhängig sind,
      + ... //oder eigene Versionen haben, bspw. Doku, Screenshots, Literatur
      + Versionen
      + LTaschenrechner
           +Taschenrechner.lpi
           +... //diverse Ordner und Dateien die versionsabhängig sind, bspw. Icons, Lokalisierung
           +...


Das hat sich bei mir so bewährt, weil meine Projekte immer klein anfangen und deshalb leicht einzurichten sein müssen. Später möchte ich nichts mehr umbauen. D.h. wenn ich ein neues Projekt anlege, würde ich nur den Projektordner "Taschenrechner" und den Lazarusprojektordner "LTaschenrechner" anlegen und darin das Projekt speichern. Alles andere wächst dann drum rum. Der Ordner "LTaschenrechner" könnte auch "source" o.ä. heißen, dann steht aber der Projektname nicht auf dem Ordner-Taskleisten-Symbol wenn der Ordner geöffnet ist. Das vorangestellte L ist zur Abgrenzung zum übergeordneten Projektordner. Ein Projekt kann auch mal mehrere Programme haben, durch das vorangestellte L stehen die dann in der Sortierung auch direkt untereinander. In "Versionen" kopier ich von Zeit zu Zeit den "LTaschenrechner"-Ordner rein, als einfache Versionsverwaltung.

Antworten