![]() |
Compilerschalter vererben
Hallo liebe Delphi-Gemeinde,
ich bin gerade am Herumexperimentieren mit Gruppenprojekten in Delphi. Die Ausgangslage ist dabei folgende: Es gibt zwei ausführbare Hauptprojekte (A.exe und B.exe) und zwei verschiedene Unterprojekte/Packages (X.bpl und Y.bpl). Die Unterprojekte sind in die Hauptprojekte eingebunden und enthalten Compilerschalter (IFDEFs). Die Hauptprojekte setzen dabei die Compilerschalter (in den Delphi-Compiler-Einstellungen unter Bedingungen). Je nachdem, was das Hauptprojekt für einen Compilerschalter setzt, sollen die Unterprojekte davon mitbekommen / davon erben. Aktuell ist es so aber nicht möglich: Ich kann nirgendwo einstellen, ob die Compilerschalter geerbt werden sollen oder nicht. Man kann nur entweder Compilerschalter für das Hauptprojekt oder eben für die Unterprojekte an sich setzen, aber keine Vererbung einstellen. Ich hatte auch schon die Idee, dass man eine .inc-Datei definiert, dort diese Schalter setzt und die .inc-Datei dann überall hinzufügt, wo man sie braucht. Das geht so zwar, allerdings habe ich die Idee verworfen, da es in meiner Projektgröße fast nicht machbar ist, diese Datei sauber zu halten. Meine Frage nun an euch: Habt ihr irgendeine Idee, wie man dieses Vorhaben umsetzen kann? Grüße aus Magdeburg :) |
AW: Compilerschalter vererben
Zustand der Compilerschalter wird nicht in den DCU gepeichert.
Kommen IFDEF über die Projektoptionen oder Parameder des DCC, dann bekommt der Compiler die Änderungen nicht mit. Lösungen: * jedes Projekt hat seine eigenen Ausgabepfade für DCU und auch DCP/BPL (wenn mit LaufzeitPackages kompiliert wird) * oder BuildAll statt Compile |
AW: Compilerschalter vererben
Vielen Dank vorab erst einmal für die schnelle Antwort!
Ich vermute aber leider, dass wir uns bei dem Ausgangsproblem falsch verstanden haben. Deswegen möchte ich das einmal genauer erklären: Wir haben derzeit mehrere relativ komplexe Hauptprogramme, die auch an einigen Programmstellen den gleichen Quellcode ausführen, welche dann aber wiederum Compilerschalter ({$IFDEF}) je Hauptprogramm besitzen und dann für jedes Hauptprogramm jeweils noch Untermodule. Dabei ist es so, dass das Projekt dann abhängig von den Compilerschaltern kompiliert wird. Jetzt wollen wir dieses große Gesamtprojekt in mehrere Hauptprogramme (Gruppenprojekte) und verschiedene Packages aufdröseln. Nun müssen wir in den Unterprojekten allerdings irgendwie abhängig vom Hauptprogramm Compilerschalter setzen oder eben nicht. Und unser Problem ist, dass man in Delphi in einem Unterprojekt (Package) nicht einstellen kann, dass es die Compilerschaltern vom Hauptprojekt erben soll. Ich hoffe, unsere Situation ist nun besser verständlich :) Wie können wir das am besten umsetzen? |
AW: Compilerschalter vererben
Das ist schon eine recht komplexe Anforderung, aber ich könnte mir vorstellen, dass man da was unter Verwendung von Build-Konfigurationen, Optionsets und Buildgruppen machen kann.
Ohne den konkreten Fall im Detail zu kennen, ist es aber sehr schwierig das genau zu beschreiben. Daher hier nur mal so stichpunktartig:
|
AW: Compilerschalter vererben
Besser in den Unterprojekten alle variablen Codeteile in seperate Klassen auslagern.
- nach Änderungen werden alle Codeteile kompiliert und manche Fehler sofort gefunden - automatische Tests können alle Fälle berücksichtigen und einzeln testen Im Hauptprogramm einen Konfigurator initialiseren, der abhängig von den Compilerschaltern die konkret benötigten Klassen auswählt, erzeugt oder bereitstellt. Compilerschalter möglichst nur an dieser einen Stelle auswerten. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz