[gelöst] Compiler-Makros definieren

Für Fragen rund um die Ide und zum Debugger
Antworten
Socke
Lazarusforum e. V.
Beiträge: 3178
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:

[gelöst] Compiler-Makros definieren

Beitrag von Socke »

Hallo zusammen,

wie können Compiler-Makros außerhalb des Quelltextes definiert werden?
Folgender Quelltext wird übersetzt:

Code: Alles auswählen

program project1;
{$MACRO ON}
{$DEFINE blubb:=5}
begin
  Writeln(blubb);
end.
Wie kann sichergestellt werden, dass folgendes Programm übersetzt wird?

Code: Alles auswählen

program project1;
begin
  Writeln(blubb);
end.
Folgende Varianten habe ich bereits ausprobiert:

Code: Alles auswählen

>fpc -Sm -dblubb:=5 project1.lpr
Free Pascal Compiler version 2.6.4 [2014/03/06] for i386
Copyright (c) 1993-2014 by Florian Klaempfl and others
Target OS: Win32 for i386
Compiling project1.lpr
project1.lpr(5,16) Error: Identifier not found "blubb"
project1.lpr(9) Fatal: There were 1 errors compiling module, stopping
Fatal: Compilation aborted
Error: C:\FPC\2.6.4\bin\i386-Win32\ppc386.exe returned an error exitcode (normal if you did not specify a source file to
 be compiled)
Sowie (Ausgabe wie oben):

Code: Alles auswählen

fpc @def.cfg project1.lpr
Inhalt der Konfigurationsdatei:

Code: Alles auswählen

-Sm
#DEFINE blubb:=5
Zuletzt geändert von Socke am Do 29. Okt 2015, 20:31, insgesamt 1-mal geändert.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Compiler-Makros definieren

Beitrag von Michl »

Also bei mir geht das, wie von dir vorgeschlagen. Ich konnte eben so ein Projekt erstellen. Dazu habe ich einfach eine .bat in meinem Projektverzeichnis erstellt und ausgeführt:

Code: Alles auswählen

set PATH=C:\Freepascal\fpc\bin\i386-win32;%PATH%
fpc project1.lpr -Sm -dblubb:=5
[Edit] Ich sollte dazu sagen, dass das so scheinbar nur mit FPC 3+ funktioniert, wie eben nochmals probiert. Verlinke ich auf FPC 2.6.2, geht das bei mir auch nicht mit der gleichen Fehlermeldung. Aber FPC 3.0 RC2 ist ja schon auf dem Markt.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Socke
Lazarusforum e. V.
Beiträge: 3178
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: Compiler-Makros definieren

Beitrag von Socke »

Michl hat geschrieben:Also bei mir geht das, wie von dir vorgeschlagen. Ich konnte eben so ein Projekt erstellen. Dazu habe ich einfach eine .bat in meinem Projektverzeichnis erstellt und ausgeführt:

Code: Alles auswählen

set PATH=C:\Freepascal\fpc\bin\i386-win32;%PATH%
fpc project1.lpr -Sm -dblubb:=5
[Edit] Ich sollte dazu sagen, dass das so scheinbar nur mit FPC 3+ funktioniert, wie eben nochmals probiert. Verlinke ich auf FPC 2.6.2, geht das bei mir auch nicht mit der gleichen Fehlermeldung. Aber FPC 3.0 RC2 ist ja schon auf dem Markt.
Vielen Dank für die Info; ich hätte als nächstes nach deiner FPC-Version gefragt.

Ich verwende hier noch FPC 2.6.4.

Edit: mit einem tagesaktuellen FPC 3.1.1 funktioniert alles wie von Michl beschrieben.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Antworten