Einzelnen Beitrag anzeigen

Rüdiger_

Registriert seit: 29. Mai 2006
Ort: Pirmasens
5 Beiträge
 
RAD-Studio 2009 Pro
 
#1

Build-Konfigurationen Debug / Release in Packages ignoriert?

  Alt 21. Apr 2009, 11:11
Hallo,

ich verzweifele momentan an der Portierung von Bibliotheken von Delphi 2007 nach 2009:
Unsere Packages werden über Build-Konfigurationen jeweils für Debug und Release getrennt compiliert.
Unter Debug ist $D+ eingeschaltet und "DEBUG" definiert, unter Release nicht ($D-) und "RELEASE" definiert.
Folgender Code steht zur Kontrolle am Anfang der in jeder Unit includeten Projektoptionsdatei:
Delphi-Quellcode:
{$ifdef DEBUG}
  {$IFOPT D+}
    {$Message Hint 'Debug ist EINGESCHALTET'}
  {$else}
    {$Message Fatal 'Fehler: Debugschalter im Debugmodus aus!'}
  {$endif}
{$else}
  {$ifndef RELEASE}
    {$Message Fatal 'Fehler: weder DEBUG noch RELEASE angegeben!'}
  {$endif}
{$endif}

{$ifdef RELEASE}
  {$IFOPT D+}
    {$Message Fatal 'Fehler: Debugschalter im Release an!'}
  {$else}
    {$Message Hint 'Code wird ohne Debuginformation compiliert'}
  {$endif}
{$endif}
Wird dieser Code in einem EXE-Projekt verwendet, funktioniert das einwandfrei.
Bei einer Bibliothek dagegen wird anscheinend nur der unter Build-Konfiguration "Basis" angegebene Wert für "Debuggen - Debug Informationen" verwendet. (Vorgabe: True)
Die Überschreibung in "RELESE" wird anscheinend ignoriert.
Obiger Code bleibt dann mit Meldung 'Fehler: Debugschalter im Release an!' stehen.
d.H. egal. was man unter DEBUG oder RELEASE angibt, es wird immer der Wert von BASIS verwendet. Das gleiche gilt für "Lokale Symbole" ($L).
Die anderen Projektoptionen scheinen zu funktionieren - Symbolreferenzinfo macht noch mucken und speichert als seinen Wert nicht; das war aber auch unter D2007 schon so.

Nochmal: dieses seltsame Verhaltet tritt bei uns nur bei Packages auf. (auch, wenn man die Projektdatei komplett neu erstellt)
- Kann dies einer nachvollziehen?
- gibt es einen Patch?

Wenn das so stimmt, bedeutet das, daß alle mit Delphi 2009 erzeugten Komponentenbibliotheken Debug-Informationen beinhalten (außer der Standard unter BASIS wurde geändert)
  Mit Zitat antworten Zitat