# Your options are: # -dX11 for X11 support (eg: Linux or FreeBSD) # -dGDI for Windows GDI support -dMEINEDEF #wird als fehlerhaft vom Compiler abgewiesen! Warum?
Warum steckst du das in extrafpc.cfg und nicht ins Projekt? "Projekt" > "Projekteinstellungen" > "Compilereinstellungen" > "Benutzerdefinierte Einstellungen" > "Definitionen" > MEINEDEF in "Definition" eintragen > "Hinzufügen" > Checkbox darunter zum Aktivieren/Deaktivieren der Definition.
Oder, wenn es nur in einer Unit benötigt wird mit {$DEFINE MEINEDEF} deklarieren.
Im Quelltext wird mit {$IFDEF MEINEDEF} auf die Direktive zugegriffen:
{$IFDEF MEINEDEF} ShowMessage('Dies wird nur angezeigt, wenn "MEINEDEF" aktiv ist'); {$ELSE} ShowMessage('Dies wird angezeigt, weil "MEINEDEF" nicht aktiv ist'); {$ENDIF}
Ich kann bestätigen dass die Variante von wp_xyz funktioniert.
Trotzdem würde ich gerne meine globalen Defines in einer eigenen Datei halten die ich auch versionieren kann. Ausführliche Beschreibungen zu den Defines lassen sich in einer Datei leicht machen. Sie lässt sich für neue Projekte IMHo auch leichter verwalten als jedes einzelne Define neu einzugeben oder in den Lazarus-Konfigurationsdateien rumzufummeln.
Aber vermutlich bin ich der einzige der so denkt Nur sollte man dann auch die Möglichkeit der Einbindung einer eigenen cfg-Datei aus der IDE rausnehmen. Wenn es denn angeboten wird sollte es dann auch funktionieren.
charlytango hat geschrieben:Trotzdem würde ich gerne meine globalen Defines in einer eigenen Datei halten die ich auch versionieren kann. Ausführliche Beschreibungen zu den Defines lassen sich in einer Datei leicht machen. Sie lässt sich für neue Projekte IMHo auch leichter verwalten als jedes einzelne Define neu einzugeben oder in den Lazarus-Konfigurationsdateien rumzufummeln.
Wiegesagt, mit extrafpc.cfg habe ich keine Erfahrung. Wenn ich in einem Projekt unit-übergreifende Defines benötige, schreibe ich mir eine include-Datei, die dann am Beginn jeder entsprechenden Unit per {$I include-datei.inc} eingebunden werden muss. In der Include-Datei werden Defines wie oben erwähnt per {$DEFINE ...} deklariert. Die Unit kann natürlich in die Versionskontrolle aufgenommen und - wenn sie entsprechend allgemein ist - von Projekt zu Projekt weiterkopiert werden. Und natürlich kann man für die einzelnen Einträge auch Kommentare hinterlegen.
{$IFDEF FPC} {------------------------------------------------------------------ Defines for Lanzarus and FPC ------------------------------------------------------------------} ////// { Activate this define if an FPC version of at least 3.0 is used. } { This define signals that an FPC version >= 3.0 is used } {$DEFINE FPC3+} {$I fpexif_fpc.inc}
// Don't use jpeg units {$DEFINE dExifNoJpeg}
{$ELSE} {------------------------------------------------------------------ Defines for Delphi ------------------------------------------------------------------} {$UNDEF FPC3+}
{ Activate this define if a library other than Delphi's jpeg is used for reading of jpeg files. Is active by default for Lazarus/FPC } {.$DEFINE dEXIFNoJpeg}
{ Activate the define ENDIAN_BIG if working on a Big-Endian machine } {.$DEFINE ENDIAN_BIG}
{ I did not test all Delphi versions. Extend the list if needed... } {$IFDEF VER150} {$DEFINE DELPHI7} {$ENDIF}
wp_xyz hat geschrieben: ... Die Unit kann natürlich in die Versionskontrolle aufgenommen und - wenn sie entsprechend allgemein ist - von Projekt zu Projekt weiterkopiert werden. Und natürlich kann man für die einzelnen Einträge auch Kommentare hinterlegen.
Aber aufpassen! In Lazarus müssen Dateinamen systemweit eindeutig sein. Ich hatte mir mal den Wolf gesucht weil ich zwei gleichnamige Dateien hatte (config.inc) Die eine in einem meiner Packages, die andere in einem Projekt. Das hat Fehlermeldungen ohne Ende gehagelt und finde die Ursache dafür erst mal.