![]() |
Bedingte Kompilierung: Unveränderte Unit immer neu kompilier
Liste der Anhänge anzeigen (Anzahl: 1)
Folgendes Problem:
Ich habe zwei Projekte, die eine gemeinsame Unit benutzen. Abhängig vom Projekt sollen innerhalb dieser Unit Prozeduren unterschiedliche Code-Abschnitte ausführen. Ich habe dies folgendermaßen gelöst: 1. Jedem Projekt wird im Dialog Projekt.Optionen.Verzeichnise/Bedingungen eine Definition hinzugefügt (P1 für Projekt1 und P2 für Projekt2) 2. In der gemeinsamen Unit ("share.pas") wird eine Include-Datei angegeben, die wiederum abhängig von den Schaltern P1 und P2 neue Schalter Programm1 und Programm2 definiert ( {$ifdef P1} {$define Programm1} {$endif P1} {$ifdef P2} {$define Programm2} {$endif P2} ) 3. Über Kompiler-Direktiven werden die Code-Abschnitte selektiert. So weit so gut. Problem: Wenn man das Projekt wechselt und neu kompiliert ohne dass sich in der share.pas eine Änderung ergibt, wird diese auch nicht neu kompiliert, was natürlich dazu führt, dass falsche Schalter definiert werden. Ich muss also jedes Mal die share.dcu löschen und dann neu kompilieren, was etwas umständlich ist. Kann man dafür sorgen, dass eine Unit immer kompiliert wird auch wenn keine direkten Änderungen stattgefunden haben? Oder gibt es eine andere Lösung für dieses Problem? Vielen Dank für eure Mithilfe Michael |
Re: Bedingte Kompilierung: Unveränderte Unit immer neu kompi
Du mußt das Projekt erzeugen und nicht nur neu Compilieren. Beim erzeugen werden alle Units neu compiliert.
|
Re: Bedingte Kompilierung: Unveränderte Unit immer neu kompi
Hallo Bernhard,
Zumindest bei Delphi 7 Pro wird auch bei Wahl von Projekt erzuegen die Unit share.pas nicht neu kompiliert. Gruß Michael |
Re: Bedingte Kompilierung: Unveränderte Unit immer neu kompi
Bei Delphi 2007 gibt es die Möglichkeit der Pre-Builds und Post-Builds.
Dabei werden vor bzw. nach dem Compilieren eine Reihe Befehle ausgeführt. Einstellen kann man diese bei den Projektoptionen. Hier könntest DU z.B. sagen, dass die share.dcu vor dem Build gelöscht wird. |
Re: Bedingte Kompilierung: Unveränderte Unit immer neu kompi
Zitat:
Beim "Projekt erzeugen" wird ALLES neu kompiliert, was im Projekt drin ist. Hast Du sie denn in dem Projekt eingebunden? Wird sie in der Projektverwaltung angezeigt? |
Re: Bedingte Kompilierung: Unveränderte Unit immer neu kompi
Hallo Raven,
ja, ich habe die Unit share.pas in beiden Projekten eingebunden. Sie wird in der Projektverwaltung angezeigt (s. Anhang). Nur neu kompiliert wird sie nicht. Weder bei Wahl von "Projekt.Projekt erzeugen" noch durch "Projekt.Projekt kompilieren" und auch nicht durch Starten des Debuggers mit F9. Manchmal macht er es aber richtig, d.h. bei Wahl von "Projekt.Projekt erzeugen" wird die share.pas kompiliert, manchmal aber auch nicht. Ich hätte schon gerne, dass er es immer richtig macht. Merkwürdig. Ist das ein Fehler in Delphi 7, kann das jemand nachvollziehen (Mehrmals Projektgruppe öffnen und Projekte neu erzeugen)? Gruß Michael |
Re: Bedingte Kompilierung: Unveränderte Unit immer neu kompi
Ich hab leider kein Delphi 7 mehr, weil wir im Herbst das Upgrade zu D2007 gemacht haben.
Aber das von Dir beschriebene Verhalten kenne ich von D7 nicht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:39 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 by Thomas Breitkreuz