Weiter Zurück Inhaltsverzeichnis

### 9. Erstellungsoptionen

Der Projekt Optionen Dialog, den Sie über das Projekt Menü erreichen können, ermöglicht es Ihnen alle Parameter einzustellen, die für die Programmerstellung notwendig sind. Die Parameter werden für die Makefile.am's und für das configure.in Skript verwendet (z.B. Versionsnummer oder Compilerwarnungen) und beeinflussen auch die Compilervoreinstellungen. Nach einer Änderung dieser Optionen sollten Sie ein 'DistClean' oder 'Alles neu erstellen' ausführen, damit Ihr Projekt mit den neuen Optionen kompiliert wird. Denken Sie daran, daß Sie nur debuggen können, wenn Sie das Erzeugen von Debuginformation eingeschaltet haben. Die Menge an Debuginformation kann mit Hilfe des Debug-Levels eingestellt werden (0-3). Wenn Sie Funktionen hinzufügen, die zu einer Bibliothek gehören, die nicht mit Hilfe der Linkereinstellungen eingebunden wurde, wird Ihr Programm nicht korrekt gebunden werden. Behalten Sie also die Linker Flags im Auge.

Für eine Release Version sollten Sie die folgenden Einstellungen vornehmen:

- Kein Debugging
- Setzen des Optimierungslevels auf -02
- Setzen der Compilerwarnungen auf -Wall
- Erhöhen Sie für jedes Release die Versionsnummer und aktualisieren Sie die .lsm Datei bezüglich Version und Anforderungen.

### 9.1 Allgemeine Optionen

Auf der ersten Seite der Projekt Optionen können Sie die allgemeinen Einstellungen für Ihr Projekt vornehmen. Dies sind der Name des Projekts, die Versionsnummer, der Name des Autors und seine Email-Adresse. Außerdem können Sie angeben ob und welche Versionsverwaltung Sie verwenden wollen. Sie können im Feld "Kurze Information" auch noch zusätzliche Angaben über den Verwendungszweck o.ä. Ihres Programmes machen.

### 9.2 Compiler Optionen

Unter Compileroptionen können Sie die Compilerflags für Zielcomputer, Debuggen und zusätzliche Optionen setzen.

#### Ziel

Unter Ziel können Sie zwei Optionen einstellen:

Zielcomputer : Sie können hier den Maschinentyp für Ihr Programm eingeben. Andere Typen als Ihre Maschine werden gewöhnlich nur benötigt, um vorcompilierte Pakete zu erstellen. i386v übergibt -b an den Compiler und ist für Cross-Compiler gedacht, um ein Binary für ein Intel-System, das mit Unix System V läuft, zu erstellen. Normalerweise können Sie die Standardeinstellung verwenden.

Optimieren: Setzen Sie hier die -O Option für den GCC. Abschalten der Optimierung bedeutet -O0. Je höher der Level, desto länger dauert der Compiliervorgang. Allerdings ist dann die Ausführgeschwindigkeit höher. Es können Optimierungslevel von 0 (keine Optimierung) bis 3 (maximale Optimierung) eingestellt werden.

Für eine Release Version Ihrer Anwendung schalten Sie die Optimierung ein und wählen Level 2.

#### Debuggen

Rechts vom Zielkasten sehen Sie die Debug-Einstellungen. Dies bedeutet, daß Sie den Compiler dazu veranlassen können, Informationen für Debugger in die ausführbare Datei zu schreiben, so daß der Programmierer in der Lage ist, die Anwendung im Kontext mit dem Quellcode zu debuggen (Symbolisches Debuggen).

Debuginfo erzeugen setzt das -g Flag; Debuglevel gibt an, wieviele Informationen in die ausführbare Datei geschrieben werden. Sie können ein Level zwischen 1 und 3 setzen. Denken Sie daran, daß die ausführbare Datei mit Erhöhung des Levels sowohl größer als auch langsamer wird.

Informationenen für gprof erzeugen: Es werden zusätzliche Informationen für den Profiler gprof generiert. Diese Option setzt das -pg Flag.

Temporäre Dateien speichern: Speichert die üblichen temporären Dateien im aktuellen Verzeichnis. Das bedeutet, daß das Compilieren der Datei foo.c die Dateien foo.o, foo.i und foo.s erzeugt.

Für eine Release Version Ihrer Anwendung schalten Sie Debuggen aus.

#### Zusätzliche Optionen

Das Texteingabefeld am unteren Rand dient dazu manuell weitere Optionen einzugeben. Diese Optionen setzen die CXXFLAGS Umgebungsvariable in den Make Dateien. Make setzt die Flags vor der Erstelling und setzt sie anschließend wieder zurück. Eine vollständige Beschreibung aller Compileroptionen finden Sie in Ihrer Compilerdokumentation; für gcc und egcs können Sie sich mit man gcc informieren; man g++ gibt Informationen zum c++ Skript aus, daß zur Steuerung des Compilers verwendet wird.

### 9.3 Compiler Warnungen

Im folgenden werden die möglichen Einstellungen für die Compiler-Warnungen des Projekt-Optionen Dialogs, Seite 3, erläutert. Die Erklärungen selbst sind der `man`-page des GCC, egcs Version 1.1.1 entnommen. Die Warnungen selbst sind diagnostische Meldungen, die anzeigen, das die entsprechenden Programmanweisungen möglicherweise Fehler verursachen.

-Wall

  Standard-Warnungen kombiniert

-W

  Compiliere mit -W. Diese Einstellung fügt Warnungen hinzu, die nicht in -Wall enthalten sind. Bitte lesen Sie die GCC-Info für weitere Informationen.

-Wtraditional

  Warnungen über bestimmte Konstruktionen ausgeben, die sich unter traditionellem und ANSI C verschieden verhalten.

-Wundef

  Warnung anzeigen, falls ein undefinierter Bezeichner in einer '#if' Direktive verwendet wird

-Wshadow

  Warnung anzeigen, falls eine lokale Variable eine andere lokale Variable überdeckt.

-Wid-clash-LEN

  Warnung anzeigen, falls zwei verschieden Bezeichner in den ersten LEN Buchstaben übereinstimmen. Dies kann bei der Übersetzung eines Programms mit einigen nicht mehr zu verwendenden Compilern helfen.

-Wlarger-then-LEN

  Warnung anzeigen, falls ein Objekt mit einer Größe über LEN Bytes definiert wird.

-Wpointer-arith

  Warne vor allem, das von der Größe eines Funktionstypen oder von einem void abhängt. GNU C weist diesen Typen aufgrund von Komfort von Berechnungen mit void * Zeigern und Zeigern auf Funktionen eine Größe von 1 zu.

-Wbad-function-cast

  Warne, wenn ein Funktionsaufruf eine Umwandlung zu einem nicht passenden Typ ist. Z. B., wenn int malloc() eine Umwandlung zu irgendwas * ist.

-Wcast-equal

  Warne, wenn ein Zeiger gecastet wird und dabei ein Typqualifizierer beim Ziel verloren ginge.Z.B., wenn ein const char * nach char * gecastet würde.

-Wcast-align

  Warne, wenn ein Zeiger so gecastet wird, daß das erforderliche Alignment des Zieles vergrößert würde. Z.B. wenn auf Maschinen, auf denen Integer nur 2- oder 4-Byte aligned sein können char * nach int * gecastet werden soll.

-Wwrite-strings

  Gebe Stringkonstanten den Typ const char[Länge]i, so daß das Kopieren einer solchen Adresse in einen nicht const char * Zeiger eine Warnung erzeugt. Diese Warnungen können helfen zur Compilezeit Code zu finden, der versucht in eine Strinkonstante zu schreiben, aber nur wenn man sehr aufmerksam beim Gebrauch von const in Deklarationen und Prototypen war. Ansonsten werden diese Meldungen nur lästig, weshalb sie mit -Wall nicht erzeugt werden.

-Wconversion

  Warne, wenn ein Prototyp eine Typumwandlung verursacht, die anders ist als die, die durchgeführt würde, wäre der Prototyp nicht da. Dies beinhaltet Konvertierungen von Festpunkt nach Fließkomma und umgekehrt und Konvertierungen, die die Breite oder Vorzeichenbehaftung eines Festpunktargumentes betreffen, es sei den es entspräche der Standarderweiterung. Ebenso wird gewarnt, wenn eine negative, ganzzahlige Konstante implizit in einen vorzeichenlosen Typ umgewandelt wird.

-Wsign-compare

  Warne, wenn ein Vergleich zwischen signed und unsigned ein falsches Ergebnis geben könnte, weil signed zu unsigned umgewandelt wird.

-Waggregate-return

  Warne, wenn eine Funktion, die eine Struktur oder Union zurückgibt, definiert oder aufgerufen wird.

-Wstrict-prototypes

  Warne, wenn eine Funktion ohne Argumenttypen deklariert oder definiert wird. (Eine Funktionsdefinition im alten Stil ist ohne Warnung erlaubt, wenn vorher eine Deklaration steht, die die Argumenttypen deklariert.)

-Wmissing-prototypes

  Warne, wenn eine globale Funktion ohne vorherige Prototypdeklaration definiert wird (auch wenn die Def. selbst einen Prototyp enthält). Benutzen Sie diese Option, um globale Funktionen zu finden, die nicht in Headerdateien deklariert sind.

-Wmissing-declarations

  Warne, wenn eine globale Funktion ohne vorherige Deklaration definiert wird (auch wenn die Def. selbst einen Prototyp enthält. Benutzen Sie diese Option, um globale Funktionen zu finden, die nicht in Headerdateien deklariert sind.

-Wredundant-decls

  Warne, wenn etwas mehr als einmal in demselben Sichtbarkeitsbereich deklariert wurde (auch in Fällen, wo die mehrfache Deklaration gültig ist und nichts ändert).

-Wnested-externs

  Warne, wenn eine extern Deklaration in einer Funktion angetroffen wird.

-Winline

  Warne, wenn eine Funktion nicht 'inline' sein kann, sie aber als 'inline' deklariert wurde, oder wenn die -finline-functions-Option angegeben wurde.

-Wold-style-cast

  Warne, wenn eine alte (C-Stil) Umwandlung im Programm benutzt wird.

-Woverloaded-virtual

  Warne, wenn die Deklaration einer Methode in einer abgeleiteten Klasse möglicherweise ein fehlerhafter Versuch ist, eine virtuelle Methode zu definieren (nur C++). In einer abgeleiteten Klasse müssen die Definitionen virtueller Methoden in der Schnittstelle mit der Deklaration dieser virtuellen Methode in der Basisklasse übereinstimmen. Mit dieser Option warnt der Compiler, wenn eine Funktionsdeklaration im Namen, aber nicht in der Schnittstelle mit der Deklaration einer virtuellen Methode in der Basisklasse übereinstimmt, wenn also die virtuelle Methode nicht definiert, sondern überladen würde.

-Wsynth

  Warne, wenn das Syntheseverhalten von g++ nicht mit dem von cfront übereinstimmt.

make all warnings into errors

  (-Werror) Warnungen als Fehler ausgeben. Die Kompilierung wird bei jeder Warnung abgebrochen.

Für eine Release Version Ihrer Anwendung sollten Sie -Wall einschalten.

### 9.4 Linker-Einstellungen

Die Linker Optionen für Ihr aktuelles Projekt können Sie auf der nächsten Seite der Projektoptionen eingeben. Sie müssen die Bibliotheken anwählen, die Ihr Programm verwendet. Wenn Ihr Programm z.B. die Klasse KFileDialog benutzt, müssen Sie KFile wählen, da KFileDialog ein Teil dieser Bibliothek ist. Für Klassen oder Funktionen die Sie nicht ankreuzen können, verwenden Sie das "Zusätzliche Bibliotheken" Feld.

#### Linker Flags

Zum Debuggen notwendige Informationen aus der ausführbaren Datei entfernen:

  Wenn Sie einen Debugger benützen wollen, sollten Sie diese Informationen in den Objektdateien behalten. Es ist sinnlos, den Compiler Debuginformationen erzeugen zu lassen und sie mit dieser Option zu entfernen.

Benutzung von dynamisch gelinkten Bibliotheken verhindern:

  Auf Systemen, die dynamische Bibliotheken unterstützen, verhindert diese Option das Linken mit diesen. Auf anderen Systemen hat diese Option keine Wirkung.

Zusätzliche Flags:

  Geben Sie hier Linkeroptionen, mit denen der Linker aufgerufen werden soll, ein.

#### Bibliotheken

Dieser Abschnitt enthält Ankreuzboxen für die für QT/KDE Entwicklung am häufigsten benötigten Bibliotheken. Sie müssen diese Bibliotheken auswählen, sonst beschwert sich der Linker über nicht aufgelöste Symbole.

X11

  Die X11 Bibliothek. Erforderlich für alle X-Window Programme.

Xext

  Die X11 Erweiterungsbibliothek. Die meisten X-Window Programme brauchen auch Xext.

qt

  Die Qt Bibliothek. Erforderlich für Qt und KDE Anwendungen.

kdecore

  Die KDE Core Bibliothek; Enhält die Basisklasssen für KDE Applikationen.

kdeui

  Das KDE Benutzer-Interface; Enthält KDE-specifische Widgets.

khtmlw

  Die KHTML Widget Bibliothek.

kfm

  Die KFM Bibliothek; Enthält Klassen für KFM Funktionen.

kfile

  Die KFile Bibliothek. Enthält File Dialoge etc.

kspell

  Die KSpell Bibliothek. Enthält ein Interface zur Rechtschreibprüfung mit ISpell.

kab

  Die KAdressBook Bibliothek. Benötigt zum Zugriff auf das Adressbuch und auf Adressbuch Widgets

Zusätzliche Bibliotheken: Hier können Sie zusätzliche von Ihrem Programm benötigte Bibliotheken wie z.B. die KOM Bibliothek eingeben. Setzen Sie die Bibliothek mit der -I Option, z.B. -Ikom .

### 9.5 Make-Einstellungen

Da GNU make einige nützliche Optionen bereitstellt, enthält der Projekt Optionen Dialog eine Seite mit Makeoptionen, auf der Sie die Optionen ein- oder ausschalten können. Die verfügbaren Einstellungen sind:

Debug Informationen ausgeben

  Es werden zusätzliche Debugginginformationen ausgegeben. Diese Informationen sagen Ihnen welche Dateien für die Neuerstellung in Betracht gezogen werden, welche Datei-Zeiten verglichen werden und mit welchem Ergebnis, welche Dateien tatsächlich neu erstellt werden müssen, welche impliziten Regeln in Betracht kommen und welche angewendet werden... Alles was interessant ist um zu sehen, wie make entscheidet was zu tun ist.

Nach Fehlern fortfahren

  Arbeite soweit möglich nach Fehlern weiter. Während das Ziel bei dem der Fehler auftrat und von diesem Ziel abhängige Dateien nicht erstellt werden können, ist es dennoch möglich, andere Abhängigkeiten zu bearbeiteten.

Datenbank ausgeben

  Gibt die Datenbank aus ( Regeln und Variablenwerte) die sich aus dem Lesen der make-Dateien ergeben; danach wird normal oder wie sonst angegeben weitergearbeitet. Außerdem wird die Versionsnummer ausgegeben.

Umgebungsvariablen

  Gibt Variablen aus der Betriebssystemumgebung den Vorrang vor Variablen aus den make-Dateien.

Keine eingebauten Regeln

  Schaltet die Verwendung der eingebauten impliziten Regeln aus. Außerdem wird die Standarderweiterungsliste für Dateierweiterungen gelöscht.

'Touch' Dateien

  Führt touch auf Dateien aus ( markiere sie als aktuell, ohne sie wirklich zu verändern). Dies wird verwendet um weitere Aufrufe von make zu täuschen.

Alle Fehler ignorieren

  Ignoriere alle Fehler in Kommandos, die beim Erstellen ausgeführt werden.

Keine Meldungen

  Zeige Kommandos, die ausgeführt werden, nicht an.

Arbeitsverzeichnis ausgeben

  Gibt vor und nach den Prozessen das Arbeitsverzeichnis aus. Dies kann nützlich sein, um Fehler in kompliziert verschachtelten, rekursiven 'Make'-Kommandos zu finden.

Jobanzahl

  Gibt die Anzahl der Jobs (Kommandos) an, die gleichzeitig abgearbeitet werden. Wenn Sie ein System mit nur einer CPU haben, ist es nicht empfehlenswert, mehr als 2 zu wählen.

Geändert setzen

  Täusche vor, daß die Zieldatei gerade verändert wurde. Dies ist fast das gleiche wie 'touch' auf die Datei auszuführen, allerdings wird die Änderungszeit nur für 'Make' geändert. Wenn Sie den Ordnerknopf auf der linken Seite drücken, können Sie eine Datei geändert setzen. Diese wird beim nächsten Aufruf von 'make' neu gebaut.

Zusätzliche Optionen

  Wählen Sie hier andere zusätzliche Optionen für Ihr Make-Programm. Sie können weitere Informationen zu Make Optionen auf den manpages finden.

Neu Erstellen bei Ausführen

  Setzt die Aktionen die bei der Auswahl von "Ausführen" durchgeführt werden. Sie können aus drei Optionen auswählen:

  - Immer neu erstellen: Immer neu erstellen, ohne auf geänderte Dateien zu prüfen.
  - Warnung bei Änderung: Warne, wenn Quelldateien verändert wurden und frage, ob neu erstellt werden soll.
  - nur bei Änderung: Prüfe, ob Quelldateien geändert wurden und erstelle neu, wenn ja..
  Die Standardeinstellung ist, immer neu zu erstellen.

Weiter Zurück Inhaltsverzeichnis