1  CodeBlocks Projektverwaltung

Die Dokumentation für Listing 3 und Listing 4 sind offizielle Dokumentationen der CodeBlocks Wiki-Seite und nur in englischer Sprache verfügbar.

Die nachfolgende Abbildung zeigt den Aufbau der CodeBlocks Oberfläche.


pict

Abbildung 1.1: IDE CodeBlocks

Management
Diese Fenster enthält die Ansicht ’Projects’ , im nachfolgenden als Projektansicht bezeichnet. In dieser werden die in CodeBlocks aktuell geöffneten Projekte angezeigt. In dem Management Fenster erhält man im Reiter ’Symbols’ die Anzeige von Symbolen, Variablen etc.
Editor
In der obigen Abbildung ist eine Quelle hello.c mit Syntaxhighlighting im Editor geöffnet.
Open files list
Zeigt die Liste der im Editor geöffneten Dateien an, hier hello.c.
CodeSnippets
Lässt sich über das Menü ’View’ ®’CodeSnippets’ anzeigen. Hier können Textbausteine, Verknüpfungen auf Dateien und Urls verwaltet werden.
Logs & others
Fenster zur Ausgabe von Suchergebnisse, Logmeldung eines Compilers etc.

Die Statusbar gibt einen Überblick der folgenden Einstellungen:

CodeBlocks bietet eine sehr flexible und umfassende Projektverwaltung. Der folgende Text geht nur auf einige Besonderheiten der Projektverwaltung ein.

 1.1  Projektansicht
 1.2  Notizen für Projekte
 1.3  Projektvorlagen
 1.4  Projekte aus Build Targets erstellen
 1.5  Virtual Targets
 1.6  Pre- und Postbuild Schritte
 1.7  Hinzufügen von Scripts in Build Targets
 1.8  Workspace und Project Dependencies
 1.9  Einbinden von Assembler Dateien
 1.10  Editor und Hilfsmittel
  1.10.1  Default Code
  1.10.2  Abbreviation
  1.10.3  Personalities
  1.10.4  Konfigurationsdateien
  1.10.5  Navigieren und Suchen
  1.10.6  Symbolansicht
  1.10.7  Einbinden von externen Hilfen
  1.10.8  Einbinden von externen Werkzeugen
 1.11  Tips zum Arbeiten mit CodeBlocks
  1.11.1  Änderungen im Editor verfolgen
  1.11.2  Datenaustausch mit anderen Anwendungen
  1.11.3  Konfiguration von Umgebungsvariablen
  1.11.4  Umschalten zwischen Perspektiven
  1.11.5  Umschalten zwischen Projekten
  1.11.6  Erweitere Einstellung für Compiler
  1.11.7  Zoom im Editor
  1.11.8  Wrap Mode
  1.11.9  Block select Mode im Editor
  1.11.10  Code folding
  1.11.11  Auto complete
  1.11.12  Find broken files
  1.11.13  Einbinden von Bibliotheken
  1.11.14  Linkreihenfolge von Objekten
  1.11.15  Autosave
  1.11.16  Einstellen für Dateizuordnungen
 1.12  CodeBlocks in der Kommandozeile
 1.13  Shortcuts
  1.13.1  Editor
  1.13.2  Files
  1.13.3  View
  1.13.4  Search
  1.13.5  Build

1.1  Projektansicht

In CodeBlocks werden Quellen und die Einstellungen für den Builtprozess in einer Projektdatei <name>.cbp gespeichert. Ein Projekt besteht typischerweise aus C/C++ Quellen und zugehörige Header Dateien. Ein neues Projekt legen Sie am einfachsten an, indem Sie das Menü ’File’ ®’Project’ ausführen und einen Wizard auswählen. Anschließend können Sie im Management Fenster über das Kontextmenü ’Add files’ Dateien zum Projekt hinzufügen. In CodeBlocks werden die Projektdateien abhängig von ihrer Dateiendung in Kategorien verwalten. Die voreingestellen Kategorien sind für

Sources
Unter der Kategorie Sources werden Quellen z.B. mit den Endungen *.c;*.cpp; aufgelistet.
ASM Sources
Unter der Kategorie ASM Sources werden Quellen z.B. mit den Endungen *.s;*.S;*.ss;*.asm aufgelistet.
Headers
Unter der Kategorie Headers werden Dateien z.B. mit den Endungen *.h; angezeigt.
Resources
Unter der Kategorie Resources werden z.B. Dateien *.res;*.xrc; für die Beschreibung von Layout von wxWidgets Fenster gelistet. Für die Anzeigen dieser Dateitypen dient im Manangement Fenster der Reiter ’Resources’.

Die Einstellungen für Typen und Kategorien von Dateien können über das Kontextmenü ’Project tree’ ®’Edit file types & categories’ angepasst werden. Dabei können auch eigene Kategorien für Dateiendungen angelegt werden. Wenn Sie z.B. Linkerskripte mit der Endung *.ld unter der Kategorie Linkerscript anzeigen möchten, legen Sie einfach eine neue Kategorie an.

Hinweis:
Wenn Sie im Kontextmenü ’Project tree’ ®’Categorize by file types’ deaktivieren, wird die Anzeige in Kategorien aufgehoben und die Dateien erscheinen wie sie im Dateisystem abgelegt sind.

1.2  Notizen für Projekte

In CodeBlocks können zu Projekten sogenannte Notes hinterlegt werden. Diese sollten eine Kurzbeschreibung oder Hinweise für das jeweilige Projekt enthalten. Durch Anzeige dieser Information beim Öffnen des Projektes bekommen andere Bearbeiter einen schnellen Überblick. Die Anzeige von Notes kann bei den Properties eines Projektes im Reiter Notes aktiviert bzw. deaktiviert werden.

1.3  Projektvorlagen

CodeBlocks wird mit einer Vielzahl von Projektvorlagen ausgeliefert, die beim Anlegen eines neuen Projektes angezeigt werden. Es ist aber auch möglich, eigene Vorlagen zu speichern und somit eigene Vorgaben für Compilerschalter, wie zu verwendete Optimierung, maschinenspezifische Schalter etc. in Vorlagen zusammenzufassen. Diese werden im Verzeichnis Dokumente und Einstellungen\<user>\Anwendungsdaten\codeblocks\UserTemplates abgelegt. Wenn die Vorlagen für alle Benutzer zugänglich sein sollen, müssen die Vorlagen in zugehöriges Verzeichnis der CodeBlocks Installation kopiert werden. Diese Vorlagen erscheinen dann beim nächsten Start von CodeBlocks unter ’New’ ®’ Project’ ®’User templates’ .

Hinweis:
Die verfügbaren Vorlagen im Project Wizard können durch Auswahl mit der rechten Maustaste bearbeitet werden.

1.4  Projekte aus Build Targets erstellen

In Projekten ist es notwendig unterschiedliche Varianten eines Projektes vorzuhalten. Varianten werden als Build Target bezeichnet. Diese unterscheiden sich in der Regel durch unterschiedliche Compileroptionen, Debug-Information und Auswahl von Dateien. Ein Build Target kann auch in ein eigenständiges Projekt ausgelagert werden, dafür selektieren Sie in ’Project’ ®’Properties’ den Reiter ’Build Targets’ die Variante und wählen Sie Schaltfläche ’Create project from target’ (siehe Abbildung 1.2).


pict

Abbildung 1.2: Build Targets

1.5  Virtual Targets

Mit sogenannten Virtual Targets können Projekte in CodeBlocks weiter strukturiert werden. Eine häufige Projektstruktur besteht aus zwei Build Targets. Einem Target ’Debug’ mit Debuginformation und einem anderen Target ’Release’ ohne diese Information. Durch Hinzufügen von Virtual Targets unter ’Project’ ®’Properties’ ®’Build Targets’ können einzelne Build Targets zusammengefasst werden. So kann zum Beispiel ein Virtual Target ’All’ die Targets Debug und Release gleichzeitig erzeugen. Die Virtual Targets werden auch in der Symbolleiste des Compilers unter Build Targets angezeigt.

1.6  Pre- und Postbuild Schritte

CodeBlocks ermöglicht es, weitere Arbeitschritte vor oder nach der Compilierung eines Projektes durchzuführen. Die Arbeitsschritte werden als Prebuilt bzw. Postbuilt Step bezeichnet. Typische Postbuilt Steps sind:

Beispiel

Erzeugung einer Disassembly aus einem Objekt unter Windows. Die Umlenkung in eine Datei erfordert den Aufruf der cmd mit der Option /c.

  cmd /c objdump -D name.elf > name.dis

Ein weiteres Beispiel für ein Postbuilt Step kann die Archivierung eines Projektes sein. Hierzu erstellen Sie ein Build Target ’Archive’ und tragen im Postbuilt Step folgende Anweisung ein

  zip -j9 $(PROJECT_NAME)_$(TODAY).zip src h obj $(PROJECT_NAME).cbp

Mit diesem Befehl wird das aktive Projekt und seine Quellen, Header und Objekte als Zip-Datei gepackt. Dabei werden über die Built-in Variablen $(PROJECT_NAME) und $(TODAY), der Projektname und das aktuelle Datum extrahiert (siehe Listing 3.2). Im Verzeichnis des Projektes liegt dann nach Ausführen des Targets ’Archive’ die gepackte Datei.

In dem Verzeichnis share/codeblocks/scripts finden Sie einige Beispiele für Skripte. Ein Skript kann über das Menü ’Settings’ ®’Scripting’ hinzugefügt und in ein Menü eingetragen werden. Wenn Sie ein Skript z.B. make_dist über ein Menü ausführen, werden alle Dateien, die zum einem aktiven Projekt gehören in ein Archiv <project>.tar.gz komprimiert.

1.7  Hinzufügen von Scripts in Build Targets

CodeBlocks bieten die Möglichkeit, Aktionen die vom Benutzer in Menüs ausgeführt werden, auch in Skripten zu verwenden. Mit dem Skript entsteht somit ein zusätzlicher Freiheitsgrad um die Generierung Ihres Projektes zu steuern.

Hinweis:
Ein Skript kann auch bei einem Build Target angegeben werden.

1.8  Workspace und Project Dependencies

In CodeBlocks können Sie mehrere Projekte geöffnet halten. Durch speichern der geöffneten Projekte über ’File’ ®’Save workspace’ werden diese in einem Arbeitsbereich unter <name>.workspace zusammengefasst. Wenn Sie beim nächsten Start von CodeBlocks den Arbeitsbereich <name>.workspace öffnen erscheinen wieder alle Projekte.

Komplexe Softwaresysteme bestehen aus Komponenten, die in unterschiedlichen CodeBlocks Projekten verwaltet werden. Des weiteren existieren bei der Generierung von solchen Softwaresystemen oftmals Abhängigkeiten zwischen diesen Projekten.

Beispiel

Ein Projekt A enthält zentrale Funktionen, die auch anderen Projekten in Form einer Bibliothek zugänglich gemacht werden. Wenn nun diese Quellen eines Projektes geändert werden, muss die Bibliothek neu erzeugt werden. Damit die Konsistenz zwischen einem Projekt B, das die Funktionen verwendet und dem Projekt A, das die Funktionen implementiert, gewahrt bleibt, muss Projekt B von Projekt A abhängen. Die Information für die Abhängigkeit von Projekten wird im jeweiligen Workspace gespeichert, damit jedes Projekt weiterhin einzeln erzeugt werden kann. Durch die Verwendung von Abhängigkeiten kann auch die Reihenfolge bei der Generierung von Projekten gesteuert werden. Die Abhängigkeiten für Projekte werden über den Menüeintrag ’Project’ ®’Properties’ und Auswahl der Schaltfläche ’Project’s dependencies’ gesetzt.

1.9  Einbinden von Assembler Dateien

In der Projektansicht (Project View) im Fenter Management werden Assembler Dateien im Kategorie ASM Sources aufgeführt. Die Anzeige von Dateien und Kategorien kann vom Benutzer festgelegt werden (siehe Kapitel 1.1). Durch einen Rechtsklick einer der gelisteten Assembler Dateien erhält man ein Kontextmenü. Darin öffnet der Befehl ’Properties’ ein neues Fenster. Klicken Sie darin auf den Reiter ’Build’ und aktivieren Sie die beiden Felder ’Compile file’ und ’Link file’. Wechseln Sie nun auf den Reiter ’Advanced’ und führen Sie folgende Schritte durch:

  1. ’Compiler variable’ auf CC setzen
  2. Den Compiler unter ’For this compiler’ auswählen
  3. ’Use custom command to build this file’ anwählen
  4. Inhalt im Fenster eingeben:
      $compiler $options $includes <asopts> -c $file -o $object

Dabei sind die CodeBlocks Variablen durch $ gekennzeichnet (siehe Listing 3.4). Diese werden automatisch ersetzt, so dass Sie lediglich die Assembleroption <asopt> durch Ihre Einstellungen ersetzen brauchen.

1.10  Editor und Hilfsmittel

1.10.1  Default Code

Durch vorgegebene Coding Rules im Unternehmen müssen Quelldateien einen einheitlichen Aufbau vorweisen. CodeBlocks bietet die Möglichkeit, beim Anlegen von neuen C/C++ Quellen und Header einen vorgegebenen Inhalt am Anfang einer Datei automatisiert einzufügen. Die vorgebene Inhalt wird als Default Code bezeichnet. Die Einstellung hierfür kann unter ’Stettings’ ®’Editor’ Default Code vorgenommen werden. Eine neue Datei erzeugen Sie über das Menü ’File’ ®’New’ ®’File’ .

Beispiel

  /⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆
   ⋆  Project:
   ⋆  Function:
   ⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆
   ⋆  $Author: mario $
   ⋆  $Name:  $
   ⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆
   ⋆
   ⋆  Copyright 2007 by company name
   ⋆
   ⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆⋆/

1.10.2  Abbreviation

Durch Definition von Abkürzung in CodeBlocks kann einiges an Schreibarbeit und Zeit gespart werden. Hierzu werden in ’Settings’ ®’Editor’ sogenannte Abbreviations unter dem Namen <name> angelegt, die über das Tastenkürzel Ctrl-J aufgerufen werden (siehe Abbildung 1.3).


pict

Abbildung 1.3: Definition von Abkürzungen

Durch Einfügen von Variablen $(NAME) in den Abkürzungen ist auch eine Parametrisierung möglich.

  #ifndef $(Guard token)
  #define $(Guard token)
  #endif // $(Guard token)

Bei Aufruf der Abkürzung <name> im Quelltext und Ausführen von Ctrl-J, wird der Inhalt der Variablen abgefragt und eingefügt.

1.10.3  Personalities

CodeBlocks Einstellungen werden als Anwendungsdaten im Verzeichnis codeblocks in einer Datei <user>.conf gespeichert. Diese Konfigurationsdatei enthält Informationen wie beispielsweise zuletzt geöffnete Projekte, Einstellungen für Editor, Anzeige von Symbolleisten etc. Standardmäßig ist die Personality ’default’ eingestellt, so dass die Konfiguration in der Datei default.conf abgelegt ist. Wenn CodeBlocks mit dem Parameter --personality=myuser in der Kommandozeile aufgerufen wird, werden die Einstellungen in der Datei myuser.conf gespeichert. Falls das Profil nicht bereits existiert, wird es automatisch angelegt. Durch diese Vorgehensweise können für unterschiedliche durchzuführende Arbeitsschritte auch zugehörige Profile gespeichert werden. Wenn Sie CodeBlocks mit dem zusätzlichen Parameter --personality=ask starten erscheint ein Auswahldialog für die verfügbaren Profile.

Hinweis:
Der Name des aktuell verwendeten Profils/Personality wird rechts in der Statusbar angezeigt.

1.10.4  Konfigurationsdateien

Die Einstellungen für CodeBlocks werden im Profil default.conf im Ordner codeblocks in Ihren Anwendungsdaten gespeichert. Bei Verwendung von personalities (siehe Listing 1.10.3 werden die Konfiguration in der Datei <personality>.conf abgelegt.

Mit dem Werkzeug cb_share_conf, aus dem CodeBlocks Installationsverzeichnis, können diese Einstellungen verwaltet und gesichert werden.

Falls Sie Standardeinstellung für mehrere Benutzer eines PCs vorgeben möchten, muss die Konfigurationsdatei default.conf im Ordner \Dokumente und Einstellungen\Default User\Anwendungsdaten\codeblocks abgelegt sein. Beim ersten Start von CodeBlocks werden die Voreinstellungen aus ’Default User’ in die Anwendungsdaten der aktuellen Benutzers kopiert.

Zur Erzeugung einer portablen Version von CodeBlocks auf einem USB-Stick gehen Sie wie folgt vor. Kopieren Sie die CodeBlocks Installation auf einen USB-Stick und legen Sie die Konfigurationsdatei default.conf in dieses Verzeichnis. Die Konfiguration wird als globale Einstellung verwendet. Bitte achten Sie darauf, dass die Datei schreibbar sein muss, damit Änderungen in der Konfiguration auch gespeichert werden können.

1.10.5  Navigieren und Suchen

In CodeBlocks existieren unterschiedliche Möglichkeiten zum schnellen Navigieren zwischen Dateien und Funktionen. Eine typische Vorgehensweise ist das Setzen von Lesezeichen (Bookmarks). Durch Betätigen des Tastenkürzel (Ctrl-B) wird ein Lesezeichen in einer Quelldatei gesetzt bzw. gelöscht. Mit (Alt-PgUp) wird zum vorherigen Lesezeichen gesprungen und mit (Alt-PgDn) zum nächsten gewechselt.

In der Projektansicht können Sie durch Auswählen eines Projektes oder im gesamten Workspace über das Kontextmenü ’Find file’ in einem Dialog einen Dateinamen angeben. Dieser wird anschließend in der Projektansicht markiert und durch Eingabe mit Return im Editor geöffnet (siehe Abbildung 1.4).


pict

Abbildung 1.4: Suche nach Dateien

Für das schnelle Navigieren zwischen Header/Quelle Dateien bietet CodeBlocks folgende Möglichkeiten

  1. Cursor auf Zeile setzen wo Header includiert wird und über Kontextmenü ’open include file’ öffnen (siehe Abbildung 1.5)
  2. Umschalten zwischen Quelle und Header über Kontextmenü ’Swap header/source’
  3. Markieren eines Begriffes z.B. eines Defines in einer Datei und Aufruf des Kontextmenü ’Find declaration’

pict

Abbildung 1.5: Öffnen einer Header Datei

CodeBlocks bietet verschiedene Möglichkeiten für die Suche in einer Datei oder in Verzeichnissen. Mit dem ’Search’ ®’Find’ (Ctrl-F) oder ’Find in Files’ (Ctrl-Shift-F) öffnet sich der Dialog für die Suche.

Eine weitere komfortable Funktion bietet das Tastenkürzel Alt-G und Ctrl-Alt-G. Der sich öffnende Dialog erlaubt die Auswahl von Dateien/Funktionen und springt anschließend an die Implementierung der Funktion (siehe Abbildung 1.6) bzw. öffnete die ausgewählte Datei. Als Eingabe werden auf Wildcards * oder ? etc. für eine inkrementelle Suche unterstützt.


pict

Abbildung 1.6: Suche nach Funktionen

Hinweis:
Mit dem Tastenkürzel Ctrl-PAGEUP springen Sie an die vorherige Funktion und mit Ctrl-PAGEDOWN zur nächsten Funktion.

Wenn Sie sich im Editor Fenster befinden, können Sie mit Ctrl-Tab zwischen den Reiter von geöffneten Dateien springen. Durch setzen der Einstellung ’Use Smart Tab-switching scheme’ in ’Settings’ ®’Notebook appearance’ erhalten Sie nun über Ctrl-Tab ein zusätzliches Open Tabs Fenster im Editor (siehe Abbildung 1.7). Dabei wird die Liste in der Reihenfolge der geöffneten Dateien gezeigt. Sie können die Tastenkombination Ctrl-Tab auch im Management Fenster verwenden, um in zwischen den Reitern zu wechseln.


pict

Abbildung 1.7: Einstellungen für Wechseln zwischen Reitern

Eine häufige Arbeitsweise bei der Entwicklung von Software ist jedoch, dass man sich durch ein Satz von Funktion hangelt, die in unterschiedlichen Dateien implementiert sind. Durch das Plugin Browse Tracker zeigt mit dem Fenster ’Browsed Tabs’ eine Liste in der Reihenfolge wie Dateien selektiert wurden. Somit können Sie komfortabel zwischen den Aufrufen navigieren (siehe Listing 2.8).

In CodeBlocks aktivieren Sie die Anzeige von Zeilennummern in ’Settings’ ®’General Settings’ im Feld ’Show line numbers’. Mit dem Tastenkürzel Ctrl-G oder über das Menü ’Search’ ®’Goto line’ springen Sie an die gewünschte Zeile.

Hinweis:
Sie können auch im Editor einen Begriff mit gedrückter Ctrl Taste markieren und dann über das Kontextmenü nach diesem Begriff z.B. in Goolge suchen.

1.10.6  Symbolansicht

Für das Navigieren über Funktionen oder Variablen bietet das Management Fenster in CodeBlocks eine Baumansicht für Symbole von C/C++ Quellen. Dabei lässt sicht der Gültigkeitsbereich (Scope) der Ansicht auf die aktuelle Datei oder Projekt oder den gesamten Arbeitsbereich einstellen.

Hinweis:
Wenn Sie einen Suchbegriff bzw. Symbolnamen in die Eingabemaske Search des Symbol Browsers eingeben, erhalten Sie, bei vorhandenen Suchtreffern, eine gefilterte Ansicht von Symbolen.

Für die Kategorien der Symbole existieren folgende Kategorien.


pict

Abbildung 1.8: Symbolansicht

Global functions
Listet die Implementierung von globalen Funktionen.
Global typedefs
Listet die Verwendung von typedef Definitionen.
Global variables
Zeigt die Symbole von globalen Variablen an.
Preprocessor symbols
Auflistung der mit #define erzeugten Präprozessor Direktiven.

Strukturen und Klassen werden unterhalb von Preprocessor symbols angezeigt. Wenn eine Kategorie mit der Maus angewählt wird, erscheinen die gefundenen Symbole in dem unteren Teil des Fensters (siehe Abbildung 1.8). Ein Doppelklick auf das Symbol öffnet die Datei, wo das Symbol definiert bzw. die Funktion implementiert ist und springt an die zugehörige Zeile.

Hinweis:
Im Editor können Sie über das Kontextmenü ’Insert Class method declaration implementation’ bzw. ’All class methods without implementation’ sich auch die Liste der Klassen anzeigen lassen.

1.10.7  Einbinden von externen Hilfen

Die Entwicklungsumgebung CodeBlocks unterstützt das Einbinden von externen Hilfen über das Menü ’Settings’ ®’Environment’ . Fügen Sie ein Manual Ihrer Wahl im chm Format in ’Help Files’ hinzu und wählen Sie die Einstellung ’this is the default help file’ (siehe Abbildung 1.9). Dabei steht im Eintrag $(keyword) als Platzhalter für einen Begriff der im Editor markiert wird. Nun können Sie in CodeBlocks in einer geöffneten Quelldatei eine Funktion mit der Maus durch Doppelklick markieren und anschließend die Hilfe mit F1 aufrufen und erhalten die zugehörige Dokumentation.

Wenn Sie mehrere Hilfedateien einbinden, können Sie im Editor einen Begriff markieren und anschließend über das Kontextmenü ’Locate in’ die Hilfedatei auswählen, in der CodeBlocks suchen soll.


pict

Abbildung 1.9: Einstellungen für Hilfe

In CodeBlocks werden auch die Hilfe mit man pages unterstützt. Hier fügen Sie einen neuen Eintrag ’man’ ein und geben den Pfad wie folgt an.

  man:/usr/share/man

CodeBlocks bietet auch einen ’Embedded HTML Viewer’, hiermit können einfache HTML-Dateien in CodeBlocks angezeigt und für Suchen genutzt werden. Konfigurieren Sie einfach den Pfad der HTML-Datei, die durchsucht werden soll und aktivieren Sie die Option ’Open this file with embedded help viewer’ in dem Menü ’Settings’ ®’Environment’ ®’Help Files’ .


pict

Abbildung 1.10: Embedded HTML Viewer

Hinweis:
Wenn Sie eine HTML-Datei im File Explorer mit einem Doppelklick öffnen (siehe Listing 2.7) dann wird der Embedded Html Viewer gestartet, solange für HTML Dateien keine andere Zuordnung im file extension handler vorgenommen wurde.

1.10.8  Einbinden von externen Werkzeugen

Die Einbindung von externen Tools ist in CodeBlocks unter dem Menüeintrag ’Tools’ ®’Configure Tools’ ®’Add’ vorgesehen. Für die Übergabeparameter der Tools kann auch auf Built-in Variables (see Listing 3.2) zugegriffen werden. Des weiteren existieren für das Starten von externen Anwendungen unterschiedliche Arten (Launching options). Je nach Option werden die extern gestarteten Anwendung beim Beenden von CodeBlocks gestoppt. Falls die Anwendungen auch beim Beenden von CodeBlocks geöffnet bleiben sollen, ist die Option ’Launch tool visible detached’ einzustellen.

1.11  Tips zum Arbeiten mit CodeBlocks

In diesem Kapitel werden Ihnen einige nützliche Einstellungen in CodeBlocks vorgestellt.

1.11.1  Änderungen im Editor verfolgen

CodeBlocks bietet die Möglichkeit geänderte Stellen eines Quellcodes im Vergleich zu einer Vorversion mit Hilfe von seitlich angebrachten Revisionsbalken automatisch sichtbar zu machen. Dabei werden Änderungen mit einem gelben Balken und gespeicherte Änderungen mit einem grünen Balken dargestellt (siehe Abbildung 1.11). Das Navigieren zwischen den einzelnen Änderungen ist über das Menü ’Search’ ®’Goto next changed line’ oder ’Search’ ®’Goto previous changed line’ möglich. Standardmäßig sind hierfür die Tastenkürzel Ctrl-F3 und Ctrl-Shift-F3 konfiguriert.


pict

Abbildung 1.11: Verfolgen von Änderungen

Diese Feature kann unter ’Settings’ ®’Editor’ ®’Margins and caret’ mit der Checkbox ’Use Changebar’ aktiviert bzw. deaktiviert werden.

Hinweis:
Wenn eine geänderte Datei geschlossen wird, geht die Änderungsinformation für Undo/Redo und die Revisionsbalken verloren. Über das Menü ’Edit’ ®’Clear changes history’ oder das zugehörige Kontextmenü kann auch bei geöffneter Datei die Änderungshistorie gelöscht werden.

1.11.2  Datenaustausch mit anderen Anwendungen

Zwischen CodeBlocks und anderen Anwendungen können Daten dynamisch ausgetauscht werden. Diese Interprozess Kommuikation wird unter Windows auf DDE (Dynamic Data Exchange) und unter anderen Betriebssystemen auf eine TCP Kommunikation zwischen den Anwendungen abgebildet.

Über diese Schnittstelle können an CodeBlocks Kommandos mit der folgenden Syntax weitergegeben werden.

  [<command>("<parameter>")]

Als Kommandos stehen zur Verfügung:

Open

Mit dem folgenden Kommando

  [Open("d:\temp\test.txt")]

wird der Parameter, hier die Datei mit absolutem Pfad, innerhalb einer CodeBlocks Instanz geöffnet oder bei Bedarf eine erste Instanz gestartet.

OpenLine

Das Kommando öffnet eine Datei mit spezifizierter Zeilennummer in einer CodeBlocks Instanz. Diese Zeilennummer wird mit :line angegeben.

  [OpenLine("d:\temp\test.txt:10")]
Raise

Setzt den Fokus auf die CodeBlocks Instanz. Hier darf kein Parameter angegeben werden.

1.11.3  Konfiguration von Umgebungsvariablen

Die Konfiguration für ein Betriebssystem wird durch sogenannte Umgebungsvariablen festgelegt. Zum Beispiel enthält die Umgebungsvariablen PATH den Pfad auf einen installierten Compiler. Das Betriebssystem geht diese Umgebungsvariable von vorne nach hinten durch, d.h. die Einträge am Ende werden als letztes durchsucht. Wenn nun unterschiedliche Versionen eines Compilers oder anderer Anwendungen installiert sind, können nun folgende Situationen auftreten:

Es könnte zum Beispiel notwendig sein, dass für unterschiedliche Projekte unterschiedliche Versionen eines Compilers oder anderer Werkzeugen vorgeschrieben sind. Eine Möglichkeit ist die Umgebungsvariablen in der Systemsteuerung jeweils für ein Projekt zu ändern. Diese Vorgehensweise ist jedoch fehleranfällig und nicht flexibel. Für diese Anforderung bietet CodeBlocks eine elegante Lösung. Es lassen sich hier unterschiedliche Konfigurationen von Umgebungsvariablen erstellen, die nur intern in CodeBlocks verwendet werden. Zusätzlich kann zwischen diesen Konfiguration umgeschaltet werden. Die Abbildung 1.12 zeigt den Eingabedialog, den Sie über das Menü ’Settings’ ®’Environment’ und Auswahl von ’Environment Varibales’ erhalten. Eine Konfiguration wird über die Schaltfläche ’Create’ erzeugt. Die Übernahme der hinzugefügten Umgebungsvariablen erfolgt durch Bestätigen des OK Knopfes. Das Aktivieren einer Konfiguration erfolgt über den Knopf Set Now.


pict

Abbildung 1.12: Umgebungsvariablen

Der Zugriff und der Gültigkeitkeitbereich auf die hier erstellten Umgebungsvariablen ist auf CodeBlocks begrenzt. Sie können diese Umgebungsvariablen wie auch andere CodeBlocks Variablen über $(NAME) expandieren.

Hinweis:
Eine Konfiguration von Umgebungsvariable lässt sich pro Projekt im Kontextmenü ’Properties’ im Reiter ’EnvVars options’ selektieren.

Beispiel

Sie können die verwendete Umgebung in einem postbuild Step (siehe Kapitel 1.6) in einer Datei <project>.env schreiben und zu Ihrem Projekt archivieren.

  cmd /c echo \%PATH\%  > project.env

oder unter Linux

  echo \$PATH > project.env

1.11.4  Umschalten zwischen Perspektiven

Abhängig von der Aufgabenstellung ist es sinnvoll unterschiedliche Konfigurationen oder Ansichten in CodeBlocks zu haben und diese zu speichern. Standardmäßig werden die Einstellungen wie z.B. Anzeige von Symbolleisten, Layout etc. in der Konfigurationsdatei default.conf gespeichert. Durch die Verwendung der Kommandozeilenoption --personality=ask beim Start von CodeBlocks kann zwischen verschiedenen Einstellungen umgeschaltet werden. Neben dieser globalen Einstellung besteht jedoch häufig auch der Wunsch während einer Session zwischen Ansichten für Fenster und Symbolleisten zu wechseln. Zwei typische Szenarien sind z.B. das Editieren von Dateien oder das Debuggen eines Projektes. Damit der Anwender nicht ständig mit dem Öffnen und Schließen von Fenstern, Symbolleisten etc. beschäftigt ist, bietet CodeBlocks einen Mechanismus um unterschiedliche Perspektiven zu speichern bzw. diese umzuschalten. Über das Menü ’View’ ®’Perspectives’ ®’Save current’ und Eingabe eines Namens <name> wird eine Perspektive gespeichert. Über ’Settings’ ®’Editor’ ®’Keyboard shortcuts’ ®’View’ ®’Perspectives’ ®<name>’ kann ein Tastenkürzel hierfür angegeben werden. Durch diese Vorgehensweise können Sie nun einfach zwischen den Ansichten über Ihre Tastenkürzel wechseln.

Hinweis:
Ein weiteres Anwendungsbeispiel ist das Editieren einer Datei im Full Screen Modus ohne Symbolleisten. Hierfür können Sie sich auch eine Perspektive z.B. ’Full’ anlegen und ein Tastenkürzel vergeben.

1.11.5  Umschalten zwischen Projekten

Wenn mehrere Projekte oder Dateien gleichzeitig geöffnet sind, so will der Benutzer häufig zwischen den Projekten und Dateien schnell wechseln können. CodeBlocks stellt hierfür eine Reihe an Shortcuts zur Verfügung.

Alt-F5
Aktiviert vorheriges Projekt aus der Projektansicht.
Alt-F6
Aktiviert nachfolgendes Projekt aus der Projektansicht.
F11
Wechselt im Editor zwischen einer Quelldatei <name>.cpp und der zugehörigen Header Datei <name>.h

1.11.6  Erweitere Einstellung für Compiler

Beim Buildprozess eines Projektes werden die Ausgaben des Compilers in Fenster Messages im Reiter Build Log ausgegeben. Wenn Sie an detaillierten Information interessiert sind, kann die Ausgabe erweitert werden. Dazu wählen Sie unter ’Settings’ ®’Compiler and Debugger’ im Reiter ’Other Settings’.


pict

Abbildung 1.13: Einstellung von Detailinformationen

Achten Sie darauf, dass beim Eintrag Selected Compiler der gewünschte Compiler eingestellt ist. Die Einstellung ’Full command line’ im Feld Compiler Logging gibt die vollständige Information im Build Log aus. Zusätzlich kann diese Ausgabe in eine HTML-Datei geloggt werden. Hierzu ist die Einstellung ’Save build log to HTML file when finished’ erforderlich. Des weiteren bietet CodeBlocks eine Fortschrittsanzeige des Buildprozesses im Fenster Build Log. Diese aktivieren Sie mit dem Einstellung ’Display build progress bar’.

1.11.7  Zoom im Editor

CodeBlocks bietet einen sehr leistungsfähigen Editor. Eine Besonderheit ist, dass Sie innerhalb einer geöffneten Datei die Darstellung vergrößern und verkleinern können. Wenn Sie eine Maus mit einem Scrollrad haben, halten Sie einfach die Ctrl-Taste gedrückt und scrollen im Editor über das Rad nach vorne oder hinten.

Hinweis:
Mit dem Tastenkürzel Ctrl-Numepad-/ oder mit ’Edit’ ®’Special commands’ ®’Zoom’ ®’Reset’ können Sie auf die ursprüngliche Schriftgröße umschalten.

1.11.8  Wrap Mode

Für das Editieren von Textdateien z.B. *.txt innerhalb CodeBlocks ist es nützlich den Eingabetext automatisch auf die Textbreite des Editorfensters in mehrere Zeilen umbrechen zu lassen. Diese Funktionalität wird ’Word wrap’ genannt und diese lässt sich im Menü ’Settings’ ®’Editor’ ®’Other Options’ und mit der Checkbox ’Word wrap’ aktivieren. Durch die Home/Pos 1 Taste springt der Cursor an den Anfang und mit End/Ende an das Ende der umgebrochenen Zeilen. Durch die Einstellung ’Settings’ ®’Editor’ ®’Other Options’ und dem Setzen von ’Home key always move to caret to first column’ wird erreicht, dass die Home/Pos 1 bzw. End/Ende Taste der Cursor an den Zeilenanfang bzw. an das Ende der aktuellen Zeile springt. Falls jedoch ein Sprung des Cursors an den Zeilenanfang des Abschnitts gewünscht ist, muss stattdessen die Tastenkombination ’Atl-Home/Pos 1’ gedrückt werden. Entsprechendes gilt für ’Alt-End/Ende’ .

1.11.9  Block select Mode im Editor

CodeBlocks unterstützt im Editor einen sogenannten Block select mode. Hiermit können bei gedrückter ’ALT’ Taste ein Rechteck mit der linken Maustaste aufziehen und kopieren bzw. einfügen. Dies ist zum Beispiel nützlich, wenn nur einige Spalten eines Array markiert und kopiert werden sollen.

Hinweis:
Beachten Sie, dass die meisten Linux Fenstermanager diese Tastenkombination für das Verschieben von Fenster vordefinieren. Deshalb muss dieses Verhalten des Fenstermanager geändert werden, damit der Block select mode unter Linux funktioniert.

1.11.10  Code folding

CodeBlocks unterstützt ein sogenanntes Folding für Quellen. Hiermit lassen sich zum Beispiel Funktionen zusammenklappen. Ein Folding Punkt erkennen Sie im Editor als Minussymbol im linken Seitenrand. Hier wird auch der Beginn und das Ende eines Folding Punktes durch eine vertikale Linie gekennzeichnet. Wenn Sie mit der linken Maustaste auf das Minussymbol klicken wir der entsprechende Abschnitt eingekappt bzw. ausgeklappt. Sie können über das Menu ’Edit’ ®’Folding’ einstellen wie eingeklappt werden soll. Im Editor wird ein eingeklappte Codestelle durch eine durchgehende horizontale Linie dargestellt.

Hinweis:
Der Stil für das Folding und eine Grenze für die Folding-Tiefe kann im Menü ’Settings’ ®’Editor’ ®’Folding’ geändert werden.

Neben dem Folding für Funktionen kann die Funktionalität auch für Präprozessor Direktiven eingestellt werden. Aktivieren Sie hierfür die Option ’Fold preprocessor commands’ im Menü ’Settings’ ®’Editor’ unter dem Eintrag Folding.

Eine weitere Möglichkeit ist benutzerdefinierte Folding Punkte zu definieren, indem ein Kommentarzeichen durch eine geöffnete Klammer den Anfang und ein Kommentar mit schließender Klammer das Ende markiert.

  //{
  code with user defined folding
  //}

Hinweis:
Bei eingeschaltetem Folding passiert es häufig, dass bei engem Seitenrand der Anwender anstatt die gewünschte Zeile zu markieren, den Folding point selektiert. In diesem Modus ist es deshalb ratsam die Zeilennummern im Editor einzublenden und dann mit der linken Maustaste in den linken Seitenrand neben der Anzeige der Zeilennummern eine oder mehrere Zeile zu markieren.

1.11.11  Auto complete

CodeBlocks parst beim Öffnen eines Projektes die ’Search directories’ die für einen Compiler oder Projekt eingestellt wurden und die im Projekt befindlichen Quellen und Header. Des weiteren werden auch die Keywords der zugehörigen Lexerdateien geparst. Die aus dem Parsen gewonne Information über Symbole kann für die sogenannte Auto completion genutzt werden, wenn diese in den Einstellungen des Editors für CodeBlocks aktiviert ist. Die Auto completion können Sie im Editor über das Tastenkürzel Ctrl-Space ausführen. Im Menü ’Settings’ ®’Editor’ ®’Syntax highlighting’ können eigene keywords zum Lexer hinzugefügt werden.

1.11.12  Find broken files

Wenn eine Datei auf der Festplatte gelöscht wurde, jedoch in der Projektbeschreibung <project>.cbp noch enthalten ist, dann wir diese Datei als ’broken file’ mit einem unterbrochenem Symbol in der Project View von CodeBlocks angezeigt. Das Entfernen einer Datei sollte in der Projekt View mit dem Kontextmenü ’Remove file from project’ vorgenommen werden.

Bei größeren Projekten mit vielen Unterordnern kann die Suchen nach ’broken files’ sehr schwierig werden. CodeBlocks bietet jedoch mit dem Plugin ThreadSearch (siehe Listing 2.6) eine einfache Lösung. Wenn Sie in ThreadSearch einen Suchbegriff eingeben und als Option ’Project files’ oder ’Workspace files’ wählen, wird ThreadSearch alle Dateien eines Projektes durchsuchen; falls ein ’broken file’ im Projekt oder Workspace vorkommt, wird als Fehler diese Datei gemeldet.

1.11.13  Einbinden von Bibliotheken

In den Builtoption eines Projektes können Sie unter ’Linker Settings’ im Eintrag ’Link libraries’ über die Schaltfläche ’Add’ verwendete Bibliotheken hinzufügen. Dabei können Sie entweder den absoluten Pfad zur Bibliothek durchsuchen oder nur den Namen ohne den Prefix lib und die Dateiendung angeben.

Beispiel

Für eine Bibliothek <path>\libs\lib<name>.a geben Sie einfach <name> an. Der Linker mit den jeweiligen Suchpfaden für die Bibliotheken bindet diese dann korrekt ein.

Hinweis:
Eine weitere Möglichkeit wie Sie Bibliotheken einbinden können, beschreibt Listing 2.10.

1.11.14  Linkreihenfolge von Objekten

Beim Compilierung werden aus Quellen name.c/cpp werden Objekte name.o erzeugt. Der Linker bindet die einzelnen Objekten zu einer Anwendung name.exe oder für den Embedded Bereiche name.elf. In einigen Fällen ist es wünschenswert die Reihenfolge für das Binden von Objekten vorzugeben. In CodeBlocks kann dies durch die Vergabe von sogenannten Prioritäten erzielt werden. Stellen Sie für eine Datei über das Kontextmenü ’Properties’ im Reiter Build die Priorität ein. Dabei führt eine geringe Priorität des Objekts dazu, dass es zu erst gebunden wird.

1.11.15  Autosave

CodeBlocks bietet die Möglichkeit Projekte und Quelldateien automatisch zu speichern bzw. eine Sicherungskopie anzulegen. Diese Funktionalität wird im Menü ’Settings’ ®’Environment’ ®’Autosave’ eingestellt. Dabei sollte als ’Save to .save file’ als Methode für das Erstellen einer Sicherungskopie eingestellt werden.

1.11.16  Einstellen für Dateizuordnungen

In CodeBlocks können Sie zwischen verschiedenen Arten der Behandlung von Dateiendungen wählen. Die Einstellungen erhalten Sie über ’Settings’ ®’Files extension handling’ . Sie können entweder die von Windows zugeordneten Anwendungen (open it with the associated application) für entsprechende Dateiendungen verwenden oder für jede Dateiendungen die Einstellungen so ändern, dass entweder ein benutzerdefiniertes Programm (launch an external program) gestartet wird oder die Datei in Editor von CodeBlocks geöffnet wird (open it inside Code::Blocks editor).

Hinweis:
Wenn ein benutzerdefiniertes Programm für eine Dateiendung gewählt wird, sollte die Einstellung ’Disable Code::Blocks while the external programm is running’ deaktiviert werden, da sonst beim Öffnen dieser Dateien CodeBlocks beendet wird.

1.12  CodeBlocks in der Kommandozeile

Die IDE CodeBlocks kann auch ohne grafische Oberfläche in der Kommandozeile ausgeführt werden. Dabei stehen unterschiedliche Schalter zur Verfügung um den Buildprozess eines Projektes zu steuern. Da CodeBlocks somit skriptfähig ist, kann die Erzeugung von Exectutables in eigene Arbeitsabläufe integriert werden.

  codeblocks.exe /na /nd --no-splash-screen --built <name>.cbp --target='Release'

<filename>

Specifies the project *.cbp filename or workspace *.workspace filename. For instance, <filename> may be project.cbp. Place this argument at the end of the command line, just before the output redirection if there is any.

--file=<filename>[:line]

Open file in Code::Blocks and optionally jump to a specific line.

/h, --help

Shows a help message regarding the command line arguments.

/na, --no-check-associations

Don’t perform any file association checks (Windows only).

/nd, --no-dde

Don’t start a DDE server (Windows only).

/ni, --no-ipc

Don’t start an IPC server (Linux and Mac only).

/ns, --no-splash-screen

Hides the splash screen while the application is loading.

/d, --debug-log

Display the debug log of the application.

--prefix=<str>

Sets the shared data directory prefix.

/p, --personality=<str>, --profile=<str>

Sets the personality to use. You can use ask as the parameter to list all available personalities.

--rebuild

Clean and build the project or workspace.

--build

Build the project or workspace.

--target=<str>

Sets target for batch build. For example --target=’Release’.

--no-batch-window-close

Keeps the batch log window visible after the batch build is completed.

--batch-build-notify

Shows a message after the batch build is completed.

--safe-mode

Alle Plugins werden beim Start deaktiviert.

> <build log file>

Placed in the very last position of the command line, this may be used to redirect standard output to log file. This is not a codeblock option as such, but just a standard DOS/*nix shell output redirection.

1.13  Shortcuts

Auch wenn man eine IDE wie CodeBlocks überwiegend mit der Maus bedient, erweisen sich dennoch Tastenkombinationen immer wieder als hilfreich, um die Arbeit zu vereinfachen und zu beschleunigen. In nachstehender Tabelle sind einige verfügbare Tastenkombinationen zusammengefasst.

1.13.1  Editor

This is a list of shortcuts provided by the CodeBlocks editor component. These shortcuts cannot be rebound.

1.13.2  Files

1.13.3  View

1.13.4  Search

1.13.5  Build