Hinweise zur Einrichtung von Code::Blocks

Make als alternative zur IDE

Wenn Sie im Verzeichnis z.B. cppbuch/k1
make
angeben, werden die dort vorhandenen Dateien übersetzt. Dabei werden abgesehen von Warn- und Fehlermeldungen die Befehle an den Compiler und den Linker angezeigt. Es geht darum, dass eine integrierte Entwicklungsumgebung (IDE) genau diese Befehle auch absetzt! Man kann das Build log der IDE mit der Ausgabe von make vergleichen, um Fehlern in der IDE-Einstellung auf die Schliche zu kommen.

Einstellungen für Code::Blocks

Die benötigten Einstellungen gelten für Code::Blocks 16.01 und 17.12 und setzen voraus, dass der unter  Downloads  für Windows angebotene MinGW-Compiler installiert wurde. Sinngemäß gelten die Hinweise auch für zukünftige Versionen und andere Entwicklungsumgebungen. Seien Sie bei der Eingabe sehr sorgfältig! Schon kleine Tippfehler führen dazu, dass Code::Blocks nicht wie beabsichtigt funktioniert.

Falls Code::Blocks den Compiler beim ersten Start nicht gefunden hat, in der Menüleiste "Settings" klicken und "Compiler" wählen. Dann "Toolchain executables" wählen und oben bei "Compiler's installation directory" C:\MinGW eingeben, wenn es dort nicht schon eingetragen ist. Ändern Sie die Namen der Programme, indem Sie überall "mingw32-" streichen. So wird aus "mingw32-gcc.exe" dann "gcc.exe" usw. Das folgende Bild zeigt das Ergebnis.

toolchain

Include-Verzeichnis einstellen

Tragen Sie unter "Settings", "Compiler", "Search directories", "Compiler" mit "Add"
C:\Users\IhrName\Documents\cppbuch\include
ein, wenn die entpackten Beispiele im Verzeichnis ...\Documents\cppbuch liegen (ggf. ändern und IhrName anpassen). $(BOOSTINCLUDE) tragen Sie ein, wenn Sie die Boost-Bibliothek benutzen wollen (ab Kapitel 17). Das Bild dazu:

include dir einstellen

Unter "Search directories", "Linker", tragen Sie ein: C:\MinGW\lib und ggf. $(BOOSTLIBDIR)
Dann "OK" klicken.

lib
 dirs einstellen

Compiler-Flags einstellen

In der Menüleiste "Settings" klicken und "Compiler" wählen. Unter dem oberen Reiter "Compiler settings" gibt es ein wenig darunter den Reiter "Compiler Flags". Dann anklicken:

Produce debugging symbols [-g]
Enable all common compiler warnings [-Wall]
Enable warnings demanded by strict ISO C and ISO C++ [-pedantic]
Stop compiling after first error [-Wfatal-errors]
(-Wfatal-errors vermeidet seitenlange Fehlermeldungen, die es sonst manchmal geben könnte.)
Mit "Ok" bestätigen.

flags
 einstellen

Der zum Download angebotene g++-Compiler Version hat als Voreinstellung automatisch C++14. Für C++17 muss unter "Other compiler options" noch -std=c++17 angegeben werden (siehe folgende Abbildung).

c++17
 einstellen

Das reicht zunächst. Die folgenden Einstellungen werden erst ab Teil II des Buchs ab Kapitel 17 benötigt.

Umgebungsvariablen hinzufügen

Diese Variablen werden für die Einbindung der Boost-Bibliothek benötigt. Der Vorteil: Wenn mal andere Verzeichnisse verwendet werden, ist nur an dieser Stelle eine Änderung erforderlich. Der Eintrag zum Inkludieren der Boost-Header muss entsprechende dem Abschnitt "Include-Verzeichnis" eingetragen sein. Für die Umgebungsvariablen den Reiter "Custom variables", dort "Add" anklicken und eintragen, siehe Abbildung:

Umgebungsvariable einstellen

Bibliotheken bekannt machen

Das kann global geschehen, wie bei den Einstellungen oben gezeigt, oder speziell für das jeweilige Projekt, wie hier gezeigt. Die projektbezogene Einstellung wird über "Project" und "Build options" erreicht. Wenn nicht zwischen Debug und Release unterschieden werden soll, einfach den Projektnamen oben links anklicken. Nach Klicken von "Add" können Sie einen Bibliotheksnamen eintragen.Dieses Vorgehen ist für alle Bibliotheken ähnlich. Hier wird es für das Programmbeispiel in cppbuch/k17/http/get gezeigt, für das die im folgenden Bild gezeigten Bibliotheken benötigt werden.

libs einstellen

Wenn Sie nicht sicher sind, welche Bibliotheken benötigt werden - sehen Sie im makefile nach! Wenn Sie dort z.B. -lpthread lesen, muss pthread eingetragen werden. D.h. Sie lassen -l weg.

Einbindung prüfen

Wenn Sie nun eine Datei übersetzen, müsste danach am Anfang im "Build log" (Button unten direkt links neben Build messages) etwa folgendes stehen (Achtung: Die Verzeichnisnamen sind vermutlich nicht dieselben wie Ihre!):

g++.exe -Wall -fexceptions -g -pedantic -Wfatal-errors -Wall -g -std=c++17 -IC:\Users\IhrName\Documents\cppbuch\include -IC:/MinGW/boost/include/boost -c C:\Users\IhrName\Documents\httpget\main.cpp -o obj\Debug\main.o
g++.exe -LC:\MinGW\lib -LC:/MinGW/boost/lib -o bin\Debug\httpget.exe obj\Debug\main.o -lpthread -lboost_system -lboost_thread -lWs2_32 -lboost_system -lboost_filesystem
Output file is bin\Debug\httpget.exe with size 1.02 MB
Process terminated with status 0 (0 minute(s), 2 second(s))
0 error(s), 0 warning(s) (0 minute(s), 2 second(s))

Wenn main() Argumente erwartet, müssen Sie vor dem Starten eingetragen werden.
Mit diesen Ausführungen/Ergänzungen müsste die Einrichtung von Codeblocks (auch für Boost) klappen.

Wo werden die Code::Blocks-Einstellungen gespeichert?

Alle Ihre Einstellungen werden im Verzeichnis C:\Users\IhrName\AppData\Roaming\CodeBlocks gesichert. Wenn es Probleme gibt, etwa weil dort noch eine Konfiguration für eine vorherige Code::Blocks-konfiguration steht, löschen Sie das Verzeichnis und geben Sie die Einstellungen neu ein. Das empfiehlt sich auch bei fehlerhaften und nachträglich korrigierten Angaben, wenn sich ein Fehler hartnäckig hält.