FPC-Sourcen Pfad ermitteln

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Mathias
Beiträge: 6900
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

FPC-Sourcen Pfad ermitteln

Beitrag von Mathias »

Auf diese Art kann man zb. die Version von FPC ermitteln.

Code: Alles auswählen

  Caption := {$I %FPCVERSION%};
Gibt es auch eine Möglichkeit, den Pfad zu den FPC-Sourcen zu ermitteln ?

Dieses hier habe ich schon gesehen: https://wiki.freepascal.org/$include
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1639
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: FPC-Sourcen Pfad ermitteln

Beitrag von fliegermichl »

Es gibt eine Variable $(FPCSrcDir). Ich weiss jetzt allerdings nicht, ob man die auch im Quellcode anwenden kann oder nur in der IDE.

Mathias
Beiträge: 6900
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: FPC-Sourcen Pfad ermitteln

Beitrag von Mathias »

Code: Alles auswählen

  Caption := {$I %FPCSrcDir%};
Geht leider nicht.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Ich934
Lazarusforum e. V.
Beiträge: 366
Registriert: So 5. Mai 2019, 16:52
OS, Lazarus, FPC: ArchLinux und Windows mit FPCUPdeluxe (L: 3.6, FPC 3.2.2)
CPU-Target: x86_64, i386
Wohnort: Bayreuth

Re: FPC-Sourcen Pfad ermitteln

Beitrag von Ich934 »

Moin,

naja ich vermute mal, das wird grundsätzlich nicht gehen. Wenn ich ein Programm habe, dann habe ich nicht zwangsläufig die FPC-Sourcen auf dem System. Installiert schon gar nicht als das ich das abfragen könnte und eine Entwicklungsumgebung, welche mir diese mitteilen könnte ist dann ja auch weg. Somit ist es schon sinnig, dass es dafür keine Variable etc. gibt.

Das Lazarus eine Variable im Programm hat ist insoweit ja sinnig, dass ich hier für den Kompilierungsprozess das benötige und das auch entsprechend dynamisch gestalten kann.

cu tb
Tipp für PostgreSQL: www.pg-forum.de

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6766
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: FPC-Sourcen Pfad ermitteln

Beitrag von af0815 »

Die Frage ist, für was benötigst du das mit den Sourcen ?
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1639
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: FPC-Sourcen Pfad ermitteln

Beitrag von fliegermichl »

af0815 hat geschrieben:Die Frage ist, für was benötigst du das mit den Sourcen ?
Ich könnte mir vorstellen, daß man z.B. alle beim compilieren verwendeten Einstellungen anzeigen will oder irgendwas.
Ich hab deshalb gestern auch alles mögliche ausprobiert um eine IDE Variable in eine Variable in meinem Programm zu bekommen - ohne Erfolg.

Klar kann ich

Code: Alles auswählen

 
{$ifdef irgendwas}
 s := 'irgendwas';
{$endif}
 
Wenn ich aber z.B. gar nicht weiss, welche defines beim compilieren verwendet wurden, kann ich auch nicht darauf reagieren.

Socke
Lazarusforum e. V.
Beiträge: 3177
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: FPC-Sourcen Pfad ermitteln

Beitrag von Socke »

Du kannst in den Lazarus-Projektoptionen das IDE-Macro zu einem Compiler-Macro machen.
Dazu musst du in den Projektoptionen (Abschnitt "Parsen") die Macros einschalten und defnierst dann in den Benutzerdefinierten Einstellungen: -dFPSOURCE=$(FPCSrcDir)

Probleme kann es dann ggf. noch mit Sonderzeichen (Schrägstrichen, Doppelpunkt etc.) geben, da das Macro im Quelltext einfach nur ersetzt wird.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1639
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: FPC-Sourcen Pfad ermitteln

Beitrag von fliegermichl »

Genau das hatte ich versucht.

Bei benutzerdefinierten Einstellungen gebe ich an
-dfpcsrcdir:=$(FPCSrcDir)

Wie weise ich das denn im Quellcode zu?

s:= fpcsrcdir; // unknwon identifier
s:= {$i %fpcsrcdir%}; // Warning: Include environment "FPCSRCDIR" not found in environment

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6766
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: FPC-Sourcen Pfad ermitteln

Beitrag von af0815 »

fliegermichl hat geschrieben:-dfpcsrcdir:=$(FPCSrcDir)
-d macht nur eine Define ! und ist somit nur als Define im Code zu verwenden.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Mathias
Beiträge: 6900
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: FPC-Sourcen Pfad ermitteln

Beitrag von Mathias »

af0815 hat geschrieben:Die Frage ist, für was benötigst du das mit den Sourcen ?
Ich will die aktuelle Makefile von ./fpcsrc/fpc/rtl/embedded/Makefile auslesen.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1639
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: FPC-Sourcen Pfad ermitteln

Beitrag von fliegermichl »

af0815 hat geschrieben:
fliegermichl hat geschrieben:-dfpcsrcdir:=$(FPCSrcDir)
-d macht nur eine Define ! und ist somit nur als Define im Code zu verwenden.
Ne, laut Doku werden so auch die Makros erzeugt.

Siehe hier

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1639
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: FPC-Sourcen Pfad ermitteln

Beitrag von fliegermichl »

Hmm, wenn ich das so mache:

Code: Alles auswählen

 
procedure ButtonClick(Sender: TObject);
begin
 {$macro on}
 {$define fpcsrc:='Hallo Welt'}
 ShowMessage(fpcsrc);
end;
 
dann funktioniert das. Gebe ich bei den Projektoptionen unter Benutzerdefinierte Einstellungen

Code: Alles auswählen

 
-dfpcsrc:=$(FPCSrcDir)
 
ein, dann meckert der Compiler, daß er fpcsrc nicht kennt.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6766
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: FPC-Sourcen Pfad ermitteln

Beitrag von af0815 »

Das ist das was ich gemeint habe. bei -d wird NUR ein define gemacht, du kannst nichts zuweisen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Socke
Lazarusforum e. V.
Beiträge: 3177
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: FPC-Sourcen Pfad ermitteln

Beitrag von Socke »

af0815 hat geschrieben:Das ist das was ich gemeint habe. bei -d wird NUR ein define gemacht, du kannst nichts zuweisen.
In den Compileroptionen muss vorher -Sm auftauchen, damit auch ein Wert zugewiesen werden kann. Werden die Markros nicht per Compilerschalter sondern erst im Quelltext mper {$MACRO ON} aktiviert, funktioniert es nicht.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1639
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: FPC-Sourcen Pfad ermitteln

Beitrag von fliegermichl »

Socke hat geschrieben:
af0815 hat geschrieben:Das ist das was ich gemeint habe. bei -d wird NUR ein define gemacht, du kannst nichts zuweisen.
In den Compileroptionen muss vorher -Sm auftauchen, damit auch ein Wert zugewiesen werden kann. Werden die Markros nicht per Compilerschalter sondern erst im Quelltext mper {$MACRO ON} aktiviert, funktioniert es nicht.
-Sm -dfpcsrc:=$(FPCSrcDir)

Code: Alles auswählen

 
 s:= fpcsrc; // Error: Identifier not found "fpcsrc"
 

Antworten