Zitat von
Assertor:
Hi,
da mit der Zeit bei uns Entwicklern ja so einige Dateien zusammenkommen, möchte ich gerne wissen, wie Ihr Eure Dateien und Projekte strukturiert?
Es geht mir nicht um Versionskontrolle und deren Struktur, sondern um die lokale Struktur von Projekten, Includes, Tutorials, Präsentationen, BuildTools, Entwicklungstools, etc.pp. Ich erhoffe mir ein paar gute Anregungen aus der Praxis anderer Entwickler. Interessant ist auch, ob Ihr Includes projektübergreifend verwendet oder dem einzelnen Projekt zuordnet (gut, mit Versionskontrolle ja automatisiert lösbar).
Gruß Assertor
In meinen Projekten gibt es in der Regel neben den Ordnern source, docs, libraries, make, etc einen target Ordner. Alle Builds laufen über ein Makefile mit Apache Ant, wobei die Sourcen und sonstigen benötigten Dateien erst in dieses Target Verzeichnis kopiert werden. Der Build findet dann nur in diesem target Verzeichnis statt. Die fertigen Installationsdateien (Setup.exe, Demo.zip) liegen am Ende dann auch im target Verzeichnis.
Ein Vorteil des automatischen Builds ist, dass man genau die Dateien zum Kompilieren verwendet die auch ausgeliefert werden (durch automatisches Umkopieren zu Beginn des Builds in das target Verzeichnis). Dadurch fällt es sehr viel schneller auf, wenn ein Build wegen fehlender Abhängigkeiten fehlschlägt. Auch 'falsch positiv'-Fehler kann man so vermeiden (wenn man in der Entwicklungsumgebung kompilieren kann, weil eine
DCU noch dort vorhanden ist - aber die zugehörige Quelldatei fehlt).
Apache Ant ist zum Bauen und Testen, und auch zur Nachbearbeitung (Komprimierung, Toolaufrufe z.B. Doxygen oder Doc-O-Matic) sehr gut geeignet. An unterschiedliche Entwicklungsumgebungen kann man es mit einer build.properties Datei anpassen, in der man die Pfade zu Compilern, Tools und zentralen Libraries einträgt und leicht z.B. auf andere Laufwerke umstellen kann. Auch das Eintragen von Copyright-Headern und andere Textbearbeitungen gehen damit sehr einfach, z.B. aus einem Innosetup-Skripttemplate mit Variablenersetzung das für den Build benötigte Skript mit Produktname/versionsnummer etc. generieren.