Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi In IFDEF abbrüfen ob für Exe oder DLL kompiliert (https://www.delphipraxis.net/105024-ifdef-abbruefen-ob-fuer-exe-oder-dll-kompiliert.html)

Bernhard Geyer 14. Dez 2007 09:56


In IFDEF abbrüfen ob für Exe oder DLL kompiliert
 
Gibt es eine Möglichkeit in einem $IFDEF abzuprüfen ob für eine Exe oder eine DLL kompiliert wird?

Hintergrund: Wir haben ein Pluginschnittstelle und bei manchen Units die in Exe und DLL verwendet werden müssen Uses-Anweisungen angepaßt werden.

Nuclear-Ping 14. Dez 2007 10:15

Re: In IFDEF abbrüfen ob für Exe oder DLL kompiliert
 
Warum nicht in der Exe ein {$DEFINE COMPILING_FOR_EXE} und dann halt die Weiche: "uses {$IF Defined(COMPILING_FOR_EXE)} AB {$ELSE} CD {$IFEND};"?

Bernhard Geyer 14. Dez 2007 10:19

Re: In IFDEF abbrüfen ob für Exe oder DLL kompiliert
 
Zitat:

Zitat von Nuclear-Ping
Warum nicht in der Exe ein {$DEFINE COMPILING_FOR_EXE} und dann halt die Weiche: "uses {$IF Defined(COMPILING_FOR_EXE)} AB {$ELSE} CD {$IFEND};"?

Weil ich schon genug Compiler-Direktiven habe und ich jetz eine einfügen will die diesen Teil auch für (andere) Exe's rausschmeißt welche die API-Schnittstelle nicht unterstützen. Und wenn ich jetzt dann hier anfangen muss IFDEF's zu schachteln wird das nicht gerade übersichtlich.

jottkaerr 14. Dez 2007 10:34

Re: In IFDEF abbrüfen ob für Exe oder DLL kompiliert
 
Hallo,

da Du um ein komplettes Build wahrscheinlich sowieso nicht herumkommen wirst (Delphi erstellt eine DCU-Datei ja nur neu, wenn sie älter als die PAS-Datei ist; dass sich ein -- wenn auch vordefiniertes -- Compiler-Symbol geändert haben könnte, ist Delphi egal), kannst Du z.B. ein neues Symbol BUILDING_DLL in den Projektoptionen aufnehmen.

Abhilfe könnte höchstens eine Include-Datei mit {$DEFINE ...} schaffen, die Du in allen relevanten Units einbindest und vor dem Compilieren auf die aktuelle Uhrzeit setzt -- falls Delphi diese Abhängigkeit erkennt, was ich im Moment aber nicht weiß.

Ein Verschachteln der {$IFDEF ...}s wirst Du aber m.E. nicht vermeiden können.

jkr

Bernhard Geyer 14. Dez 2007 11:23

Re: In IFDEF abbrüfen ob für Exe oder DLL kompiliert
 
Zitat:

Zitat von jottkaerr
da Du um ein komplettes Build wahrscheinlich sowieso nicht herumkommen wirst (Delphi erstellt eine DCU-Datei ja nur neu, wenn sie älter als die PAS-Datei ist; dass sich ein -- wenn auch vordefiniertes -- Compiler-Symbol geändert haben könnte, ist Delphi egal),

Ist kein Problem da wir für jedes Projekt Ausgabepfad für die DCU's definieren so das diese immer zum Projekt abgelegt sind.
Zitat:

Zitat von jottkaerr
Ein Verschachteln der {$IFDEF ...}s wirst Du aber m.E. nicht vermeiden können.

Wäre unschön :cry:


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:31 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