Compiler Options per include Datei

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut

Compiler Options per include Datei

Beitragvon charlytango » 27. Okt 2019, 09:29 Compiler Options per include Datei

Hi,
unter Compiler Options/Custom Options (Compilereinstellungen/Benutzerdefinierte Einstellungen) kann man projektweit #DEFINE Einstellungen vornehmen. Und das ganz bequem mit der Schaltfläche "Defines".

Das klappt bei wenigen Einträgen ganz gut. bei mehrern bzw vielen davon, die dann evtl auch noch beschrieben werden müssen leider nicht bequem.

In anderen Pascaldialekten kann man Dateien mit solchen Definitionen ins Projekt einbinden (z.B. meinprojekt.cfg).
Meine Suche danach war leider frustran und ohne wirkliches Ergebnis.

Könnt ihr mir da bitte auf die Sprünge helfen?
THX
Zuletzt geändert von charlytango am 1. Nov 2019, 15:22, insgesamt 3-mal geändert.
charlytango
 
Beiträge: 172
Registriert: 12. Sep 2015, 11:10
Wohnort: Wien
OS, Lazarus, FPC: Laz 2.0.3 FPC 3.2 | 
CPU-Target: Win 32Bit, 64bit
Nach oben

Beitragvon af0815 » 27. Okt 2019, 10:12 Re: Compiler Options per include Datei

Die Custom Options liegen im *.lpi File und dort gibt es keine 'Includes'.

Ich mache es nicht so bequem und schreibe meine Defines unter Custom options -dMyDefine hinein. Damit kann ich das per C&P jederzeit vervielfältigen. Allerdings erscheinen nach der händischen Deklaration auch sofort in den Defines und können dort aktiviert und deaktiviert werden. Man muss halt einmal alle aktivieren, damit man die herauskopieren kann.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
af0815
 
Beiträge: 3788
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: FPC 3.2 Lazarus 2.0 per fpcupdeluxe | 
CPU-Target: 32Bit (64Bit)
Nach oben

Beitragvon charlytango » 27. Okt 2019, 10:58 Re: Compiler Options per include Datei

erstmal danke f die schnelle Antwort.

So etwas hatte ich schon befürchtet. Spannend dass das in Delphi 5 möglich war und hier nicht.
Irgend einen Grund wird das schon haben.

Case Closed.
charlytango
 
Beiträge: 172
Registriert: 12. Sep 2015, 11:10
Wohnort: Wien
OS, Lazarus, FPC: Laz 2.0.3 FPC 3.2 | 
CPU-Target: Win 32Bit, 64bit
Nach oben

Beitragvon fliegermichl » 27. Okt 2019, 13:54 Re: [Erledigt] Compiler Options per include Datei

Wieso soll das nicht gehen?

{$i meineconfig.cfg}

bindet die Datei ein und da kann man {$define abc} reinschreiben.
fliegermichl
Lazarusforum e. V.
 
Beiträge: 407
Registriert: 9. Jun 2011, 08:42
Wohnort: Echzell
OS, Lazarus, FPC: Winux (L 2.0.7 FPC 3.04) | 
CPU-Target: 32/64Bit
Nach oben

Beitragvon Socke » 27. Okt 2019, 22:15 Re: [Erledigt] Compiler Options per include Datei

Man könnte auch in den Projekteinstellungen unter Konfiguration und Ziele > Zusätzliche Compiler-Konfigurationsdatei einbinden (@) eine Datei angeben. Diese muss dan das Format der fpc.cfg anstatt der Programmcode-Deklarationen haben.
Ich finde, das ist eine schönere Methode. Hier kann ich keine Datei vergessen und die Quelltextdateien muss ich nicht ändern.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Socke
Lazarusforum e. V.
 
Beiträge: 2631
Registriert: 22. Jul 2008, 18:27
Wohnort: Köln
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE | 
CPU-Target: 32bit x86 armhf
Nach oben

Beitragvon charlytango » 1. Nov 2019, 15:21 Re: [Erledigt] Compiler Options per include Datei

Socke hat geschrieben:Man könnte auch in den Projekteinstellungen unter Konfiguration und Ziele > Zusätzliche Compiler-Konfigurationsdatei einbinden (@) eine Datei angeben. Diese muss dan das Format der fpc.cfg anstatt der Programmcode-Deklarationen haben.
Ich finde, das ist eine schönere Methode. Hier kann ich keine Datei vergessen und die Quelltextdateien muss ich nicht ändern.


Diese Methode würde ich auch schön finden nur wehrt sie sich.

ich habe eine Datei app.cfg im Format der fpc.cfg erstellt:

..und wie angegeben eingebunden. Wurde alles ohne meckern akzeptiert.
Ein Testprojekt habe ich beigefügt. (Es stilisiert das Einschalten einer Splashscreen. programmatisch sicher falsch, aber es geht hier nur um den Code und ide verwendung.)

Nach dem Einbinden der app.cfg hat sich erstmal (unmittelöbar nach Einbinden des config files und speichern der Einstellungen) gar nichts getan. Ich meine damit dass der Code im Editor von grau auf schwarz wechseln sollte wenn das entsprechende define aktiv ist.

Nach schließen und öffnen der Projektdatei (project1.lpr) wurde der Code angepasst und akiviert.
Dieser Trick hat die anderen Dateien (z.B. unit1) völlig unbeeindruckt gelassen.

Scheinbar werden die Einstellungen im zusätzlichen Konfigurationsfile dort gar nicht berücksichtigt

getestet mit einer Neuinstallation Laz 2.0 fixes, FPC3.2fixes (Lazarus IDE 2.0.7 r62130)

Benutzt man die Defines der Custom Options werden Änderungen prompt im Sourcecode angezeigt.

Ist das Benutzen eines zusätzlichen Compiler Config Files nun nur für den Compiler und die Projektdatei gedacht oder gibt es da noch lose Fäden?

LG
Dateianhänge
project1.zip
(126.01 KiB) 9-mal heruntergeladen
charlytango
 
Beiträge: 172
Registriert: 12. Sep 2015, 11:10
Wohnort: Wien
OS, Lazarus, FPC: Laz 2.0.3 FPC 3.2 | 
CPU-Target: Win 32Bit, 64bit
Nach oben

Beitragvon charlytango » 1. Nov 2019, 15:24 Re: [Erledigt] Compiler Options per include Datei

fliegermichl hat geschrieben:Wieso soll das nicht gehen?

{$i meineconfig.cfg}

bindet die Datei ein und da kann man {$define abc} reinschreiben.


Ich nehme an daß {$i meineconfig.cfg} dann zumindest in jedem betroffenen Sourcecodefile stehen müsste.
Oder geht das an einem Ort projektweit?
charlytango
 
Beiträge: 172
Registriert: 12. Sep 2015, 11:10
Wohnort: Wien
OS, Lazarus, FPC: Laz 2.0.3 FPC 3.2 | 
CPU-Target: Win 32Bit, 64bit
Nach oben

Beitragvon fliegermichl » 2. Nov 2019, 14:39 Re: [Erledigt] Compiler Options per include Datei

charlytango hat geschrieben:
fliegermichl hat geschrieben:Wieso soll das nicht gehen?

{$i meineconfig.cfg}

bindet die Datei ein und da kann man {$define abc} reinschreiben.


Ich nehme an daß {$i meineconfig.cfg} dann zumindest in jedem betroffenen Sourcecodefile stehen müsste.
Oder geht das an einem Ort projektweit?


Das einbinden muss in jeder unit gemacht werden.
fliegermichl
Lazarusforum e. V.
 
Beiträge: 407
Registriert: 9. Jun 2011, 08:42
Wohnort: Echzell
OS, Lazarus, FPC: Winux (L 2.0.7 FPC 3.04) | 
CPU-Target: 32/64Bit
Nach oben

Beitragvon Socke » 6. Nov 2019, 23:02 Re: [Erledigt] Compiler Options per include Datei

charlytango hat geschrieben:Nach dem Einbinden der app.cfg hat sich erstmal (unmittelöbar nach Einbinden des config files und speichern der Einstellungen) gar nichts getan. Ich meine damit dass der Code im Editor von grau auf schwarz wechseln sollte wenn das entsprechende define aktiv ist.

Nach schließen und öffnen der Projektdatei (project1.lpr) wurde der Code angepasst und akiviert.
Dieser Trick hat die anderen Dateien (z.B. unit1) völlig unbeeindruckt gelassen.

Scheinbar werden die Einstellungen im zusätzlichen Konfigurationsfile dort gar nicht berücksichtigt

getestet mit einer Neuinstallation Laz 2.0 fixes, FPC3.2fixes (Lazarus IDE 2.0.7 r62130)

Benutzt man die Defines der Custom Options werden Änderungen prompt im Sourcecode angezeigt.

Ist das Benutzen eines zusätzlichen Compiler Config Files nun nur für den Compiler und die Projektdatei gedacht oder gibt es da noch lose Fäden?

Soweit ich erkennen kann, wirkt sich die zusätzliche Konfigurationsdatei korrekt auf den Compiler aus.
Dass diese im Code Editor nicht korrekt erkannt bzw. beachtet werden, wäre wohl einen Bugeintrag wert.

Über den Menüeintrag Ansicht > IDE-Interna > Über FPC, Reiter FPC output kann man gut erkennen, wie Lazarus den Compiler nach den verwendeten Macros und Defines abfragt. Dabei wird aber nur die Standardkonfigurationsdatei verwendet. Diese müssten eigentlich Projektspezifische ausgewertet werden.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Socke
Lazarusforum e. V.
 
Beiträge: 2631
Registriert: 22. Jul 2008, 18:27
Wohnort: Köln
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE | 
CPU-Target: 32bit x86 armhf
Nach oben

Beitragvon charlytango » 8. Nov 2019, 13:20 Re: Compiler Options per include Datei

Ich habe nun ein voll funktionierendes Demoprojekt erstellt bei dem man im zusätzlichen config file app.cfg eine Splashscreen per $DEFINE ein oder ausschalten kann.

Die Defines werden beim Kompilieren berücksichtigt, das Projekt reagiert wie erwartet
In der IDE werden die Defines des zusätzlichen Config files (in diesem Beispiel app.cfg) nicht berücksichtigt, im Editor ändert sich bei Änderungen in der app.cfg nichts.

Socke hat geschrieben:Über den Menüeintrag Ansicht > IDE-Interna > Über FPC, Reiter FPC output kann man gut erkennen, wie Lazarus den Compiler nach den verwendeten Macros und Defines abfragt. Dabei wird aber nur die Standardkonfigurationsdatei verwendet. Diese müssten eigentlich Projektspezifische ausgewertet werden.


Auch beim FPC Output wird app.cfg nicht berücksichtig und auch auch nicht interpretiert.

Text für eine Bugmeldung und das Codeexample liegt bei.
Sollen dazu zwei Bugmeldungen oder nur eine gemeinsame eingestellt werden?



********************Text für Bugmessage

It is possible to use an additional compiler config file per project.

Menue: Project > Project Options... //Compiler Options > Config and Target > Use additional compiler config file

During compilation this additional config file (in this case app.cfg) is taken into consideration and it works as expected.

But the IDE Editor does not use the values of the defined additional configuration file(app.cfg).
Changes in app.cfg do not change the behavior of the editor as it should be.

Given the definition of USE_SPLASH in the additional configuration file (app.cfg) and the code example:
{$IFDEF USE_SPLASH}
lblSplash.Caption:='Splashscreen should be used';
{$ELSE}
lblSplash.Caption:='No Splashscreen should be shown';
{$ENDIF}

no changes were made in the editor when changing the value USE_SPLASH in app.cfg. One case should be engrayed, the other should be not engrayed. But nothing happens.

Furthermore app.cfg is not included in "View > IDE Internals > About FPC // FPC output".
Only the standard file fpc.cfg is interpreted. The additional config file (in this case app.cfg) is neither shown nor interpreted.
Dateianhänge
project1.zip
example for bugreport
(126.41 KiB) 3-mal heruntergeladen
charlytango
 
Beiträge: 172
Registriert: 12. Sep 2015, 11:10
Wohnort: Wien
OS, Lazarus, FPC: Laz 2.0.3 FPC 3.2 | 
CPU-Target: Win 32Bit, 64bit
Nach oben

• Themenende •

Zurück zu Freepascal



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste

porpoises-institution
accuracy-worried