AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Bedingte Kompilierung: Unveränderte Unit immer neu kompilier
Thema durchsuchen
Ansicht
Themen-Optionen

Bedingte Kompilierung: Unveränderte Unit immer neu kompilier

Ein Thema von micha888 · begonnen am 17. Jun 2008 · letzter Beitrag vom 17. Jun 2008
Antwort Antwort
micha888

Registriert seit: 20. Jun 2006
5 Beiträge
 
#1

Bedingte Kompilierung: Unveränderte Unit immer neu kompilier

  Alt 17. Jun 2008, 12:47
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
Angehängte Dateien
Dateityp: zip bedingte_kompilierung_886.zip (13,0 KB, 3x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Bedingte Kompilierung: Unveränderte Unit immer neu kompi

  Alt 17. Jun 2008, 12:49
Du mußt das Projekt erzeugen und nicht nur neu Compilieren. Beim erzeugen werden alle Units neu compiliert.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
micha888

Registriert seit: 20. Jun 2006
5 Beiträge
 
#3

Re: Bedingte Kompilierung: Unveränderte Unit immer neu kompi

  Alt 17. Jun 2008, 12:57
Hallo Bernhard,

Zumindest bei Delphi 7 Pro wird auch bei Wahl von Projekt erzuegen die Unit share.pas nicht neu kompiliert.

Gruß

Michael
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Bedingte Kompilierung: Unveränderte Unit immer neu kompi

  Alt 17. Jun 2008, 12:57
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.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: Bedingte Kompilierung: Unveränderte Unit immer neu kompi

  Alt 17. Jun 2008, 12:59
Zitat von micha888:
Zumindest bei Delphi 7 Pro wird auch bei Wahl von Projekt erzuegen die Unit share.pas nicht neu kompiliert.
Das kenn ich aber so nicht.
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?
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
micha888

Registriert seit: 20. Jun 2006
5 Beiträge
 
#6

Re: Bedingte Kompilierung: Unveränderte Unit immer neu kompi

  Alt 17. Jun 2008, 13:11
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
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Bedingte Kompilierung: Unveränderte Unit immer neu kompi

  Alt 17. Jun 2008, 13:16
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.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Antwort Antwort


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 00:04 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