Sign in Join
Wiki copytemporary

IDE Window: Compiler Options/de: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11## Erstellmodi
22
33### Hinzufügen, Löschen und Aktivieren von Erstellmodi
44
55Diese Möglichkeit gibt es nur für Projekte, nicht für Packages.
66
77Erstell Modi erlauben es für ein Projekt verschiedene Compilereinstellungen zu speichern. So können zum Beispiel für die Entwicklung (Debugging) andere Compilereinstellungen verwendet werden als für die endgültige Version. Zwischen diesen Einstellungen können Sie dann in der IDE per Mausklick wechseln.
88
99**Anmerkung:** If you want to pass some options depending on the platform, for example passing some extra linker options under macOS, please take a look at Build Macros.
1010
1111The first grid on the top of the page contains the list of build modes with three columns.
1212
1313The first column shows which mode is currently active. When you activate another mode, all compiler options pages will load the settings of the new mode, including the macro values on the build modes page. There is always only one mode active and you can only edit the properties of one mode at a time. Which mode is active is stored in the session file (lps). The default mode is the first mode.
1414
1515If your project stores the session in a separate lps file (see Project options / Session / Save session info in), you can store extra modes in the session, so that each developer can have her own set of modes. In this case the second column shows where the mode is stored, in the lpi or the lps (in session). Keep in mind that the first mode is the default mode for the project, so it must be stored in the project, not in the session file.
1616
1717The last column is the name of the mode. It is an arbitrary string, so you can give it a short name or a whole sentence.
1818
1919- The **plus** button adds a new mode, by duplicating the currently active one and activates it.
2020- The **minus** button delete the currently selected mode. There must be at least one mode. If you delete the first mode, which is the default mode, the second mode automatically becomes the default mode.
2121- The **up**, **down** buttons allows to reorder the modes.
2222- The **rightmost** button shows the differences between build modes.
2323
2424**Hinweis:**: Once you added another build mode there will be a new button in the IDE main bar to quickly switch the currently active mode.
2525
2626**Anmerkung:**: Wenn sie ein neues Projekt mit einer alten IDE öffnen, dann sehen sie nur den Vorgabemodus. Wenn sie das Projekt mit der alten IDE speichern, dann gehen alle anderen Modi, alle Makros und conditionals verloren.
2727
2828*Erstellmodi* existieren seit Version 0.9.31.
2929
3030### Hinzufügen eines Release- und eines Debugmodus
3131
3232Die häufigste Aufgabe für Projekte ist das Hinzufügen eines einfachen Release- und Debug-Erstellungsmodus. Denken Sie daran, immer auch einen Debug-Erstellungsmodus zu verwenden, da das Debuggen im Release-Erstellungsmodus nicht funktioniert und dann nur in der endgültigen Version der Anwendung den Release-Erstellungsmodus verwenden.
3333
3434Der erste Schritt zum Hinzufügen dieser Erstellungsmodi ist das Aufrufen des Projektoptionsdialogs des Projekts. Vergewissern Sie sich dort, dass Sie über zwei Erstellungsmodi verfügen. Ein sogenannten Release- und ein anderes als Debug-Modus. Standardmäßig gibt es dort immer einen Erstellungsmodus. Klicken Sie in diesem Dialogfeld einmal auf die Schaltfläche +, um einen weiteren Modus hinzuzufügen, und benennen Sie die Erstellungsmodi um, indem Sie auf deren Namen doppelklicken. Stellen Sie als Nächstes sicher, dass Sie den Debug-Erstellungsmodus auswählen, damit er dann konfiguriert werden kann.
3535
3636![](/wiki-images/4/4c/Build_Mode_Debug.png)
3737
3838Once we select the debug build mode, all configurations from the project options dialog will be specific to this build mode. The most important configuration to set for this build mode is the Linking options, which should enable GDB debugging, as is the default for Lazarus projects, like in this screenshot:
3939
4040![](/wiki-images/e/e1/Build_Mode_Debug_Linking.png)
4141
4242To configure the release build mode we should go back to the Build Modes section and activate the release build mode:
4343
4444![](/wiki-images/8/8d/Build_Mode_Release.png)
4545
4646And for this build mode also go to the linking section and deactivate generating debug info:
4747
4848![](/wiki-images/3/32/Build_Mode_Release_Linking.png)
4949
5050Now just remember to go back to the Build Modes tab and set the debug build mode as the active one while developing the application and only use the release when making releases.
5151
5252### Den aktiven Erstellmodus auswählen
5353
5454One can select the currently active build mode either in the "Project Options" dialog or in the main IDE Window, in a special button with a drop down which will appear only if the project has more then 1 build mode, as one can see in this screenshot:
5555
5656![](/wiki-images/6/6f/Selecting_Build_Mode_Main_IDE_Windows.png)
5757
5858### Projektmakros
5959
6060The second grid at the bottom of the page shows the project macro values. Anmerkung: Dabei handelt es sich um Lazarus-Makros, nicht um FPC-Makros.
6161
6262They are simple name, value pairs. Macros can be used in all file names and search paths of the project. Almost all macros have default values so you will only define macros here if you want to override the default. For example a macro **macro1** can be used in the *Other unit files* by inserting the text *\$(macro1)*. This macro will then be replaced by the value.
6363
6464Packages can define macros which can be set (overriden) by the project.
6565
6666**Default value**: Setting a macro value to an empty value is not the same as using the default value. To use the default value of a macro, delete the macro from the list.
6767
6868**Delete a macro**: A macro can be deleted from the list by changing the name to (none) or empty.
6969
7070You can set macros depending on other macros on the page Build Macros.
7171
7272For more details about build macros and conditionals see [[Macros and Conditionals]].
7373
7474*Projektmakros* existieren seit Version 0.9.29.
7575
7676#### Widget type
7777
7878In Lazarus 1.0 and later, you use macros to change the widget set of the project. Click on the combo box in the *Macro name* cell and select *LCLWidgetType*. The *Macro value* then shows a combobox where you can select the desired widgetset. If you want to revert to the default widget type, you can delete the two cells again.
7979
8080The screenshot below shows how to select qt widgetset: ![](/wiki-images/4/4e/BuildModes_DebugRelease_Widgetqt.png)
8181
8282## Pfade
8383
8484Hier sind die allgemeinen Regeln für die Suchpfade:
8585
8686- Relative Pfade werden mit dem Projekt- oder Package-Verzeichnis (wo die .lpi/.lpk Datei ist) erweitert.
8787- Diese Pfade werden zu den Suchpfaden hinzugefügt. Sie ersetzen sie nicht.
8888- Die IDE hat einen Satz von Suchpfaden für jedes Verzeichnis. Das bedeutet, dass ein Package Suchpfade haben kann, die sich von denen des aktiven Projekts unterscheiden.
8989- Wenn ein Package oder Projekt ein Package verwendet, bindet es auch die zugehörigen Suchpfade ein. Sie können die geerbten Suchpfade sehen auf der #Vererbt Seite.
9090- Wenn Sie das Lazarus Package-System verwenden, müssen Sie nur höchst selten Suchpfade per Hand eingeben.
9191- Der FreePascal Compiler hat eine eigene Konfigurationsdatei (Vorgabe: /etc/fpc.cfg), welche einen Satz von Suchpfaden zu den FPC .ppu - Dateien definiert. Zum Beispiel um die FPC Units der RTL oder FCL wie 'classes', 'sysutils' zu finden. Fügen Sie hier keine Suchpfade zu der Quelltextdateien (.pas, .inc) hinzu.
9292- Suchpfade werden durch ein Semikolon ';' getrennt.
9393- Führende und nachlaufende Leerzeichen werden von der IDE ignoriert und automatisch entfernt. Die IDE normalisiert die Suchpfade und fügt das Pfadbegrenzungszeichen hinzu (Windows: \\, alle anderen: /). Suchpfade werden automatisch für das aktuelle Betriebssystem konvertiert, wenn eine .lpi oder .lpk Datei geöffnet wird.
9494- Sie können Makros verwenden. Zum Beispiel \$(TargetCPU). Siehe [[IDE Macros in paths and filenames/de|IDE Makros in Pfaden und Dateinamen]].
9595- Wenn Sie nicht einen Suchpfad verwenden wollen, der von einem benutzten Package geerbt wurde, müssen Sie die Compilereinstellungen des benutzten Packages ändern.
9696- Die IDE hat einen Satz von Pfad-Einstellungen pro Verzeichnis:
9797 - Jedes Verzeichnis im Unit-Suchpfad des Projekts erhält alle Projekt-Suchpfade.
9898 - Jedes Verzeichnis im Unit-Suchpfad des Packages erhält alle Package-Suchpfade.
9999 - Andere Verzeichnisse erhalten die Projekt-Suchpfade. Wenn der Projekt-Suchpfad den '.' enthält, sieht das Verzeichnis auch das Projektverzeichnis.
100100- Die Verwendung von "uses unitname in 'filename'" wirkt sich nicht auf die anderen Suchpfade aus.
101101
102102### Andere Units (-Fu)
103103
104104Dies ist der Suchpfad für die Pascal Units (.ppu, .pp, .pas, .p) des Projekts oder Packages. Schauen Sie auf den Fenstertitel, um zu erfahren welches (aktiv ist). Dieser Pfad wird an den FreePascal Compiler übergeben, welcher ihn zu seinem Unit-Pfad hinzufügt.
105105
106106- Das Hinzufügen und Entfernen von Units zum Projekt/Package führt zu einer automatischen Nachfrage, ob der Unit-Pfad angepasst werden soll.
107107- Dieser Suchpfad enthält die Verzeichnisse ihres Projekts (oder Packages), welche die .pas, .pp oder .p Dateien enthalten.
108108- VORSICHT: Fügen Sie keine Verzeichnisse von verwendeten Lazarus-Packages zu diesem Pfad hinzu. Andernfalls wird FPC die .ppu-Dateien des Packages neu erstellen und sie in ihrem Projektverzeichnis ablegen. Dies führt zu mehrfachen .ppu Versionen und Sie werden seltsame 'Can not find unit' Fehler erhalten.
109109
110110Zum Beispiel: Fügen Sie keine FPC oder LCL Quellverzeichnisse zu diesem Suchpfad hinzu.
111111
112112- Wenn Sie einige Units in Ihren Projekten gemeinsam verwenden wollen, sollten Sie ein Package für sie erzeugen. Es ist einfach.
113113
114114### Include-Dateien (-Fi)
115115
116116Dies ist der Suchpfad für die Include-Dateien (z.B. .inc oder .lrs Dateien). Dieser Pfad wird an den FreePascal Compiler gegeben, welcher ihn zu seinem Include-Pfad hinzufügt, der von den Include-Direktiven wie {\$I filename.inc} oder {\$INCLUDE filename.inc} verwendet wird.
117117
118118### Bibliotheken (-FI)
119119
120120Dies ist der Suchpfad für Bibliotheken (.dll oder .so oder .a Dateien).
121121
122122### Unit-Ausgabeverzeichnis (-FU)
123123
124124Dies ist das Verzeichnis, in dem der Compiler alle Ausgabedateien (Compilerschalter -FU) wie .ppu, .o oder .rst Dateien ablegt. Wenn Sie die \$R Direktive für die .lfm Dateien verwenden, werden auch die .lfm Dateien dorthin kopiert.
125125
126126Ein bekanntes Anwendungsbeispiel ist ein Ausgabeverzeichnis namens *units*, und dazu ein extra Unterverzeichnis für die Ziel-CPU und das Zielbetriebssystem. Zum Beispiel:
127127
128-` units/$(TargetCPU)-$(TargetOS)`
128+```text
129+ units/$(TargetCPU)-$(TargetOS)
130+```
129131
130132Anmerkungen:
131133
132134- Wenn das Unit-Ausgabeverzeichnis leer ist, wird Lazarus **nicht** den **-FU** Schalter an den Compiler übergeben. Der Compiler nimmt dann den **-FE** Schalter. Siehe [[IDE Window: Project Options|Project target file]]
133135- Packages vererben normalerweise ihr Ausgabeverzeichnis an andere Packages via die 'usage' Einstellungen. Sie brauchen keine Package-Pfade manuell zu Ihrem Projekt hinzufügen.
134136
135137### Ziel-Dateiname (-o)
136138
137139Anmerkung: Dies existiert nur für Projekte, nicht für Packages.
138140
139141Set here the filename of the generated executable. If the file is relative it will be expanded with the project directory (where the .lpi file is). If no file is given the executable is put into the unit output directory and has the name of the main source file name (usually the .lpr file) without the extension. If no extension is given, the default extension for the platform is added (e.g. *.exe* for MS Windows, none for others). When a new project was not yet saved and is built the IDE saves the files to the test directory. The relative files are then relative to this directory.
140142
141143Lazarus passes the compiler switch
142144
143145- **-o** um den Ziel-Dateinamen zu definieren
144146- **-FE** wenn sich der Ziel-Dateiname nicht im Projektverzeichnis (Verzeichnis mit der .lpi Datei) befindet
145147- **-FU** wenn das Unit-Ausgabeverzeichnis nicht leer ist
146148
147149If the target file name is in another directory (not the directory of the .lpi file), Lazarus will pass the **-FE** switch to the compiler to make sure that the secondary files, like *.o* and *.rst* are put into the same directory. If you cleared the *unit output directory* then the IDE will not pass the **-FU** switch and the compiler will generate the *.ppu/.o* files of the units in the target directory too.
148150
149151If you cleared the *unit output directory* **and** your project target file is in the project directory, then neither **-FU** nor **-FE** is passed to the compiler and the compiler will work Delphi compatible and generate the *.ppu/.o* file of each unit in the same directory as the unit.
150152
151153#### Konventionen anwenden
152154
153155Mit der Aktivierung werden verschiedene Namenskonventionen (abhängig von der Zielplattform) angewendet.
154156
155157- Windows: Bei einem Programm wird die **.exe**-Erweiterung angehängt, bei einer Bibliothek **.dll**.
156158- Unix (z.B. Linux, BSD, Darwin/macOS): Bei einer Bibliothek wird der Name kleingeschrieben und wenn der Name nicht mit 'lib' beginnt, wird **lib** vorangestellt.
157159- Linux, BSD: Wenn es eine Bibliothek ist, wird **.so** angehängt.
158160- Darwin/macOS: Wenn es eine Bibliothek ist, wird **.dylib** angehängt.
159161
160162### Andere Quellen
161163
162164Dies ist der Suchpfad für Pascal Unit-Quellen, der nur von der IDE verwendet wird und nicht vom Compiler. Normalerweise lassen Sie dies leer. Er ist nur dann nützlich, wenn Sie die .ppu-Dateien ohne Lazarus erzeugen.
163165
164166Beispiel: Sie haben ein Verzeichnis mit Quellen und ein Verzeichnis mit den dazugehörigen .ppu Dateien und Sie können oder wollen kein Lazarus-Package erzeugen. Sie fügen das .ppu Verzeichnis zum 'Andere Unitdateien' Pfad hinzu und das .pas Verzeichnis zum 'Andere Quellen' Pfad. Auf diese Weise wird der Compiler die .ppu Dateien verwenden und nicht versuchen, sie jedes Mal neu zu erstellen. Und die IDE wird die Quellen finden und *Find Declaration* funktioniert.
165167
166168### Zusätzlicher Debuggerpfad
167169
168170Diese Verzeichnisse werden zum Suchpfad des IDE-Debuggers hinzugefügt, wenn er nach Quelldateien sucht (Units und Include Dateien).
169171
170172## Konfiguration und Ziele
171173
172174### Konfigurationsdateien
173175
174176### Zielplattform
175177
176178- Ziel-Betriebssystem
177179- Ziel-CPU-Familie
178180- Zielprozessor
179181
180182## Parsen
181183
182184Siehe [Free Pascal - Onlinedokumentation](http://www.freepascal.org/docs.html)
183185
184186### Syntax-Modus
185187
186188Wählen sie hier den Vorgabemodus. Wenn eine Unit keine {\$mode irgendeinmodus} Direktive enthält, wird dies als Vorgabe verwendet.
187189
188190Siehe [Free Pascal - Online documentation](http://www.freepascal.org/docs.html)
189191
190192### Syntaxeinstellungen
191193
192194- C-artige Operatoren (*=, +=, /= und -=)
193195- Assertionen verwenden
194196- LABEL und GOTO zulassen
195197- C++-artige Inlineanweisungen
196198- C-artige Makros (global)
197199- TP/BP 7.0 kompatibel
198200- Name des Konstruktors muss 'init' sein (Destruktor muss 'done' heißen)
199201- 'static'-Schlüsselwort in Objekten
200202- Ansi-Strings verwenden
201203
202204### Assembler-Stil
203205
204206- -R\<x\> assembler reading style:
205207- -Rdefault use default assembler
206208- -Ratt read AT&T style assembler
207209- -Rintel read Intel style assembler
208210
209211## Kompilieren und Linken
210212
211213Siehe [Free Pascal - Onlinedokumentation](http://www.freepascal.org/docs.html)
212214
213215- Optimierungen
214216- Andere Optimierungen
215217- Unit-Stil
216218- Heap- und Stackgrößen
217219- Linken
218220
219221## Debuggen
220222
221223Siehe [Free Pascal - Onlinedokumentation](http://www.freepascal.org/docs.html)
222224
223225- Überprüfungen
224226- Info für GDB
225227- Andere Debugger-Optionen
226228
227229## Ausführlichkeit
228230
229231- Compilerausgaben
230232- Abbruch nach Fehlerzahl
231233
232234## Meldungen
233235
234236Siehe [Free Pascal - Onlinedokumentation](http://www.freepascal.org/docs.html) Note that adding a lot of verbosity slows down the parsing of the compiler out much, sogar wenn die meisten Nachrichten im Nachrichtenfenster verborgen werden.
235237
236238## Andere
237239
238240Siehe [Free Pascal - Onlinedokumentation](http://www.freepascal.org/docs.html)
239241
240242- Bedingungen
241243- Benutzerdefinierte Einstellungen
242244
243245## IDE Makros
244246
245247This page allows to define your project/package specific macros and conditionals. The IDE already provides a lot of [[IDE Macros in paths and filenames|macros]]. You can add your own macros that are valid when the project/package is loaded.
246248
247249Conditionals allow to set macro values depending on target platform and other macros. For example you can add a linker option when compiling for macOS.
248250
249251Use the left **+** button to add a new macro for the project/package. Select a macro and click on the middle **+** button to add a new possible value. The actual value of a macro is set in the conditionals below, or by the current project on the **build modes** page (IDE menu / Project / Project Options / Compiler options / Build Modes). To delete a value or a macro, select it and click on the **-** button.
250252
251253The conditionals use a scripting language similar to pascal and are edited in the text editor at the bottom of the page. Many short cuts work like in the source editor, including word/identifier completion.
252254
253255For more details about build macros and conditionals see [[Macros and Conditionals]].
254256
255257![](/wiki-images/5/52/Compileroptions_buildmacros1.png)
256258
257259Build macros and conditionals exist since 0.9.29.
258260
259261## IDE Makrowerte
260262
261263## Vererbt
262264
263265Diese Seite zeigt alle Compilereinstellungen, die von Packages geerbt wurden. Packages erben Optionen über ihre 'usage' Optionen.
264266
265267The topmost node shows all inherited options, that is the sum of all used packages.
266268
267269The nodes below show the inherited options of each use package.
268270
269271## Compiler-Kommandos
270272
271273### Makedatei anlegen
272274
273275Aktivieren sie es, wenn die IDE vor jedem Erstellen ein Makefile und eine Makefile.fpc anlegen soll. Dies wird gegenwärtig nur für Packages unterstützt, nicht für Projekte.
274276
275277### Vorher ausführen
276278
277279Richten sie hier einen Befehl ein, der vor dem Starten des Compilers ausgeführt wird.
278280
279281Aufruf an:
280282
281283- Kompilieren - ausführen bei normalem Kompilieren (F9).
282284- Neu kompilieren - ausführen, wenn alles neu erstellt wird. This could for example a script to clean up.
283285- Start - ausführen bei schnellem Kompilieren. Wenn ein Projekt gestartet wird, prüft die IDE, ob eine Neuerstellung notwendig ist. Wenn keine Neuerstellung notwendig ist, überspringt die IDE den Kompilierungsschritt. Setzen sie diese Option, um den Befehl immer auszuführen, sogar wenn der Kompilierungsschritt übersprungen wird.
284286
285287Die IDE kann den Output des Befehls ndos analysieren und filtern und bei Fehlern stoppen. Aktivieren sie die Einstellungen, welche Meldungen die IDE überwachen soll.
286288
287289### Compiler
288290
289291Dies ist der Compiler-Pfad, der vom Projekt oder Package verwendet wird. Voreinstellung ist das Makro \$(CompPath), das durch den Compiler-Dateinamen in den Umgebungseinstellungen ersetzt wird.
290292
291293### Nachher ausführen
292294
293295Richten Sie hier einen Befehl ein, der nach dem Starten des Compilers ausgeführt wird. Siehe oben 'Vorher ausführen' für Details.
294296
295297Eine nützliche Anwendung wäre beispielsweise, sich eine fremdkompilierte (cross-compiled) ausführbare Datei auch immer gleich automatisch vom PC auf die Zielhardware, etwa einen Raspberry, kopieren zu lassen:
296298
297299scp "\$TargetFile()" pi@raspberry:/home/pi/bin
298300
299301(Das kann tatsächlich sogar ohne Kennworteingabe geschehen, wenn man sich mit "ssh-keygen" ein Schlüsselpaar erzeugt und den öffentlichen Schlüssel dann der Datei authorized_keys des Empfängersystems hinzufügt, indem man "ssh-copy-id \[remoteuser@\]remotehost" aufruft; Details finden sich z.B. [hier](https://wiki.debian.org/de/SSH#SSH_ohne_Passwort))
300302
301303## Diese Einstellungen gelten als Vorgabe für neue Projekte
302304
303305Kreuzen Sie diese Checkbox an und klicken Sie auf OK. Die Einstellungen werden gespeichert in *~/.lazarus/compileroptions.xml* (oder welchen primären Konfigurationspfad Sie auch immer haben). Wenn Sie ein neues Projekt erzeugen, wird diese Datei geladen und initialisiert die Compilereinstellungen. Dieses Merkmal existiert seit Version 0.9.29.
304306
305307## Buttons
306308
307309### Hilfe
308310
309311Ruft die englische Version dieser Seite auf.
310312
311313### Einstellungen anzeigen
312314
313315Öffnet einen Dialog, der die aktuellen Kommandozeilenparameter anzeigt.
314316
315317### Test
316318
317319Dies wird verschiedene Tests starten, um übliche Konfigurationsfehler zu finden. Bei FPC 2.2.0 wird vor einigen doppelten Units gewarnt. Die Warnungen sind korrekt. Aber sie können diese ignorieren, wenn sie die betroffenen Units nicht verwenden.
318320
319321### Laden/Speichern
320322
321323Öffnet einen Dialog zum speichern/öffnen der aktuellen Compilereinstellungen in/aus einer XML Datei.
322324
323325### OK
324326
325327Wendet die Änderungen an und beendet den Dialog.
326328
327329### Abbrechen
328330
329331Macht alle Änderungen rückgängig und beendet den Dialog.
330332
331333---
332334*From the Free Pascal wiki, page "IDE Window: Compiler Options/de", as it stood on 2019-12-22 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history