Difference between revisions of "IDE Window: Compiler Options/de"

From Lazarus wiki
Jump to navigationJump to search
Line 132: Line 132:
 
* You should not set the widget set for a package, because then the project can not override it. Only set it, if the package is part of a set of packages - one for each widget set.
 
* You should not set the widget set for a package, because then the project can not override it. Only set it, if the package is part of a set of packages - one for each widget set.
  
In Lazarus 1.0 und höher leitet "Anderes LCL-Widgetset wählen (Makro LCLWidgetType)" zur Seite [[IDE_Window:_Compiler_Options#Widget_type|Erstellmodi]] weiter, wo sie das Widgetset wählen können.
+
In Lazarus 1.0 und höher leitet "Anderes LCL-Widgetset wählen (Makro LCLWidgetType)" zur Seite [[IDE_Window:_Compiler_Options/de#Erstellmodi|Erstellmodi]] weiter, wo sie das Widgetset wählen können.
  
 
== Parsen ==
 
== Parsen ==

Revision as of 17:16, 8 September 2012

Deutsch (de) English (en) español (es) français (fr) 日本語 (ja) русский (ru)

Erstellmodi

Adding, deleting, activating build modes

Only projects have this page. A package does not have this page.

Build modes allow to define sets of compiler options and to quickly switch between these sets. For example you can define a mode for debugging which compiles your project with range checking, while your default mode does not.

Note: If you want to pass some options depending on the platform, for exampe passing some extra linker options under OS X, please take a look at the page Build Macros.

The first grid on the top of the page contains the list of build modes with three columns.

The 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.

If 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.

The 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.

  • The plus button adds a new mode, by duplicating the currently active one and activates it.
  • 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.
  • The up, down buttons allows to reorder the modes.

Projekt Makros

The second grid at the bottom of the page shows the project macro values. They are simple name, value pairs. Macros can be used in all file names and search paths of the project. 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.

Packages can define macros which can be set (overriden) by the project.

You can set macros depending on other macros on the page Build Macros.

For more details about build macros and conditionals see Macros and Conditionals.

Erstellmodi existieren seit Version 0.9.29.

Pfade

Hier sind die allgemeinen Regeln für die Suchpfade:

  • Relative Pfade werden mit dem Projekt- oder Package-Verzeichnis (wo die .lpi/.lpk Datei ist) erweitert.
  • Diese Pfade werden zu den Suchpfaden hinzugefügt. Sie ersetzen sie nicht.
  • 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.
  • 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.
  • Wenn Sie das Lazarus Package-System verwenden, müssen Sie nur höchst selten Suchpfade per Hand eingeben.
  • 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.
  • Suchpfade werden durch ein Semikolon ';' getrennt.
  • 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.
  • Sie können Makros verwenden. Zum Beispiel $(TargetCPU). Siehe IDE Makros in Pfaden und Dateinamen.
  • Wenn Sie nicht einen Suchpfad verwenden wollen, der von einem benutzten Package geerbt wurde, müssen Sie die Compilereinstellungen des benutzten Packages ändern.
  • Die IDE hat einen Satz von Pfad-Einstellungen pro Verzeichnis:
    • Jedes Verzeichnis im Unit-Suchpfad des Projekts erhält alle Projekt-Suchpfade.
    • Jedes Verzeichnis im Unit-Suchpfad des Packages erhält alle Package-Suchpfade.
    • Andere Verzeichnisse erhalten die Projekt-Suchpfade. Wenn der Projekt-Suchpfad den '.' enthält, sieht das Verzeichnis auch das Projektverzeichnis.
  • Die Verwendung von "uses unitname in 'filename'" wirkt sich nicht auf die anderen Suchpfade aus.

Andere Units (-Fu)

Dies 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.

  • Das Hinzufügen und Entfernen von Units zum Projekt/Package führt zu einer automatischen Nachfrage, ob der Unit-Pfad angepasst werden soll.
  • Dieser Suchpfad enthält die Verzeichnisse ihres Projekts (oder Packages), welche die .pas, .pp oder .p Dateien enthalten.
  • 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.

Zum Beispiel: Fügen Sie keine FPC oder LCL Quellverzeichnisse zu diesem Suchpfad hinzu.

  • Wenn Sie einige Units in Ihren Projekten gemeinsam verwenden wollen, sollten Sie ein Package für sie erzeugen. Es ist einfach.

Include-Dateien (-Fi)

Dies 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.

Bibliotheken (-FI)

Dies ist der Suchpfad für Bibliotheken (.dll oder .so oder .a Dateien).

Unit-Ausgabeverzeichnis (-FU)

Dies 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.

Ein bekanntes Anwendungsbeispiel ist ein Ausgabeverzeichnis namens units, und dazu ein extra Unterverzeichnis für die Ziel-CPU und das Zielbetriebssystem. Zum Beispiel:

 units/$(TargetCPU)-$(TargetOS)

Anmerkungen:

  • Wenn das Unit-Ausgabeverzeichnis leer ist, wird Lazarus nicht den -FU Schalter an den Compiler übergeben. Der Compiler nimmt dann den -FE Schalter. Siehe Project target file
  • Packages vererben normalerweise ihr Ausgabeverzeichnis an andere Packages via die 'usage' Einstellungen. Sie brauchen keine Package-Pfade manuell zu Ihrem Projekt hinzufügen.

Ziel-Dateiname (-o)

Anmerkung: Dies existiert nur für Projekte, nicht für Packages.

Set 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.

Lazarus passes the compiler switch

  • -o to define the target file name.
  • -FE if the target file name is not in the project directory (where the lpi file is)
  • -FU if the unit output directory is not empty

If 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.

If 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.

Konventionen anwenden

Mit der Aktivierung werden verschiedene Namenskonventionen (abhängig von der Zielplattform) angewendet.

  • Windows: Bei einem Programm wird die .exe-Erweiterung angehängt, bei einer Bibliothek .dll.
  • Unix (z.B. Linux, BSD, Darwin/OS X): Bei einer Bibliothek wird der Name kleingeschrieben und wenn der Name nicht mit 'lib' beginnt, wird lib vorangestellt.
  • Linux, BSD: Wenn es eine Bibliothek ist, wird .so angehängt.
  • Darwin/OS X: Wenn es eine Bibliothek ist, wird .dylib angehängt.

Andere Quellen

Dies 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.

Beispiel: 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.

Zusätzlicher Debuggerpfad

Diese Verzeichnisse werden zum Suchpfad des IDE-Debuggers hinzugefügt, wenn er nach Quelldateien sucht (Units und Include Dateien).

LCL-Schnittstelle (bis Lazarus 1.0)

In älteren Lazarus-Versionen: Dies ist das verwendete LCL-Widgetset. Normalerweise wird das Voreinstellungs-Widgetset verwendet. Wenn sie ein anderes probieren wollen oder cross kompilieren, stellen sie hier ein anderes Widgetset ein.

  • Das Voreinstellungs-Widgetset eines Packages ist das widget set des aktuellen Projekts.
  • Das Voreinstellungs-Widgetset des aktuellen Projekts hängt vom gegenwärtigen Betriebssystem ab. Zum Beispiel: win32 für Windows 2000.
  • You should not set the widget set for a package, because then the project can not override it. Only set it, if the package is part of a set of packages - one for each widget set.

In Lazarus 1.0 und höher leitet "Anderes LCL-Widgetset wählen (Makro LCLWidgetType)" zur Seite Erstellmodi weiter, wo sie das Widgetset wählen können.

Parsen

Siehe Free Pascal - Onlinedokumentation

Syntax-Modus

Wählen sie hier den Vorgabemodus. Wenn eine Unit keine {$mode irgendeinmodus} Direktive enthält, wird dies als Vorgabe verwendet.

Siehe Free Pascal - Online documentation

Syntaxeinstellungen

  • C-artige Operatoren (*=, +=, /= und -=)
  • Assertionen verwenden
  • LABEL und GOTO zulassen
  • C++-artige Inlineanweisungen
  • C-artige Makros (global)
  • TP/BP 7.0 kompatibel
  • Name des Konstruktors muss 'init' sein (Destruktor muss 'done' heißen)
  • 'static'-Schlüsselwort in Objekten
  • Ansi-Strings verwenden

Assembler-Stil

  • -R<x> assembler reading style:
  • -Rdefault use default assembler
  • -Ratt read AT&T style assembler
  • -Rintel read Intel style assembler

Codegenerierung

Siehe Free Pascal - Onlinedokumentation

Linken

Siehe Free Pascal - Onlinedokumentation

Ausführlichkeit

Meldungen

Siehe Free Pascal - Onlinedokumentation 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.

Andere

Siehe Free Pascal - Onlinedokumentation

IDE Makros

This page allows to define your project/package specific macros and conditionals. The IDE already provides a lot of macros. You can add your own macros that are valid when the project/package is loaded.

Conditionals allow to set macro values depending on target platform and other macros. For example you can add a linker option when compiling for Mac OS X.

Use 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.

The 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.

For more details about build macros and conditionals see Macros and Conditionals.

Compileroptions buildmacros1.png

Build macros and conditionals exist since 0.9.29.

IDE Makrowerte

Vererbt

Diese Seite zeigt alle Compilereinstellungen, die von Packages geerbt wurden. Packages erben Optionen über ihre 'usage' Optionen.

The topmost node shows all inherited options, that is the sum of all used packages.

The nodes below show the inherited options of each use package.

Kompilierung

Makedatei anlegen

Aktivieren 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.

Vorher ausführen

Richten sie hier einen Befehl ein, der vor dem Starten des Compilers ausgeführt wird.

Aufruf an:

  • Kompilieren - ausführen bei normalem Kompilieren (F9).
  • Neu kompilieren - ausführen, wenn alles neu erstellt wird. This could for example a script to clean up.
  • 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.

Die IDE kann den Output des Befehls ndos analysieren und filtern und bei Fehlern stoppen. Aktivieren sie die Einstellungen, welche Meldungen die IDE überwachen soll.

Compiler

Dies 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.

Nachher ausführen

Richten Sie hier einen Befehl ein, der nach dem Starten des Compilers ausgeführt wird. Siehe oben 'Vorher ausführen' für Details.

Diese Einstellungen gelten als Vorgabe für neue Projekte

Kreuzen 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.

Buttons

Hilfe

Ruft die englische Version dieser Seite auf.

Einstellungen anzeigen

Öffnet einen Dialog, der die aktuellen Kommandozeilenparameter anzeigt.

Test

Dies 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.

Laden/Speichern

Öffnet einen Dialog zum speichern/öffnen der aktuellen Compilereinstellungen in/aus einer XML Datei.

OK

Wendet die Änderungen an und beendet den Dialog.

Abbrechen

Macht alle Änderungen rückgängig und beendet den Dialog.