AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Compilerschalter vererben

Ein Thema von ymair · begonnen am 22. Mär 2021 · letzter Beitrag vom 24. Mär 2021
Antwort Antwort
ymair

Registriert seit: 17. Mär 2021
4 Beiträge
 
#1

Compilerschalter vererben

  Alt 22. Mär 2021, 14:55
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.016 Beiträge
 
Delphi 12 Athens
 
#2

AW: Compilerschalter vererben

  Alt 22. Mär 2021, 15:01
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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (22. Mär 2021 um 15:03 Uhr)
  Mit Zitat antworten Zitat
ymair

Registriert seit: 17. Mär 2021
4 Beiträge
 
#3

AW: Compilerschalter vererben

  Alt 24. Mär 2021, 07:17
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?
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.934 Beiträge
 
Delphi 12 Athens
 
#4

AW: Compilerschalter vererben

  Alt 24. Mär 2021, 09:06
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:
  • Optionsgruppen enthalten die jeweiligen Compilerschalter
  • Build-Konfigurationen sorgen dafür, dass die DCUs in verschiedenen Verzeichnissen liegen
  • Buildgruppen erzeugen mehrere Projekte und Konfigurationen auf einmal
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Compilerschalter vererben

  Alt 24. Mär 2021, 12:33
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.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz