updated:  2023 17. July
published:  2021 27. January

Codeblocks IDE

Die Codeblocks C++ Entwicklungsumgebung.

Installieren der Codeblocks IDE

Codeblocks steht als aktuelles Release 20.03 in der 32bit und 64bit Version und als nightly build (64bit) zur Verfügung. Es werden jeweils eine Setup- und eine NoSetup-Variante angeboten. In Windows 10 kannst du die Codeblocksvariante -NoSetup 32bit- ohne Adminrechte in dein Benutzerverzeichnis User\AppData\local\Programs auspacken.

MinGW-Compiler in Codeblocks

In Codeblocks können unterschiedliche Compiler eingestellt und verwendet werden. Alle verwendeten Compiler in Codeblocks werden im «Menu: Settings → Compiler → Global compiler settings → [Reiter] Toolchain executables» eingerichtet. Wichtig ist das Verzeichnis zum Compiler unter Toolchain executables einzutragen.

Voreingestellt und mitgeliefert werden im Release 20.03 die MinGW-Compiler 8.1.0:

  • für 64bit Anwendungen: (x86_64-posix-seh-rev0, Built by MinGW-W64 project) 8.1.0
  • für 32Bit Anwendungen: (i686-posix-dwarf-rev0, Built by MinGW-W64 project) 8.1.0

 .\\path-to-compiler\\gcc.exe --version
   

Hinweis: Um 32bit Anwendungen in deiner 64bit Codeblocksvariante zu bauen, verwende den 32bit MinGW/GCC-Compiler (i686-posix-dwarf-rev0) aus der 32bit Codeblocksvariante 20.03

Aktuelle MinGW Compiler

Ein neuerer Compiler für Codeblocks wird im Projekt TDM-GCC angeboten. TDM-GCC ist eine Compilersuite für Windows, dass die Toolset des GCC-Compilers von Linux für Windows zur Verfügung stellt.

Das Projekt msys2 bietet weitere Compiler, unter anderem auch clang. Als Packetmanager wird pacman (Tutorial) verwendet. Für die lokale Installation eines Packets mit pacman -U <packetname.pkg.tar.zst> kann das Packet unter MSYS2 Packages gesucht und lokal gespeichert werden.

Weitere MinGW-Projekte sind: winlibs.com, nixman, und nuwen.net.

Codeblocks Profil

In Codeblocks kann ein persönliches Profil in einem externen Verzeichniss erstellt werden. In dem Profil werden alle Einstellungen zu Codeblocks wie Compiler, Debuger, Bibliotheken usw. gespeichert. Das ist nützlich wenn eine neuere Version von Codeblocks verwendet wird.

codeblocks.start.bat

 @echo off

 set PATH_CODEBLOCKS=C:\dev\codeblocks\codeblocks-current\
 set PATH_USERPROFIL=M:\Projekte\Programmierung\Codeblocks-IDE\profile

 start /D %PATH_CODEBLOCKS% codeblocks.exe --user-data-dir=%PATH_USERPROFIL%

Boost C++ Library (32bit) in Codeblocks

Das Boost-Projekt ist eine riesige Sammlung von C++ Bibliotheken die in einem C/C++ Projekt die Programmierung durch vorgefertigte Funktionen zu allerlei Aufgaben erleichtert. Teilweise sind einige Boost-Bibliotheken im C++-Standard aufgenommen und stehen mit modernen Compiler zur Verfügung ohne die Boost-Bibliothek einbinden zu müssen. Als Beispiel sei die Filesystem Bibliothek genannt, die in C++17 als Standard aufgenommen wurde. Im Weiteren ist Boost neben vielen anderen C++ Bibliotheken in der Liste der freien Bibliotheken der CPP-Referenz aufgeführt.

Um Boost zu nutzen lade die Boost Library in der Version 1.70.0 herunter und entpacke sie am besten in C:\\boost-version.

Compile Boost Library

Um Boost bauen zu können, wird ein Compiler benötigt. Wir verwenden den gcc-Compiler von MinGW.

cmd.exe
  
 # setze Path zum MinGW 32bit Compiler
 set PATH=%PATH%;C:\\Verzeichnis\\zum\\MinGWCompiler\\bin
 gcc --version			# Ausgabe: gcc.exe (i686-posix-dwarf-rev0, Built by MinGW-W64 project) 8.1.0

 cd boost-version		# gehe zum Boost-Verzeichnis
 bootstrap.bat gcc		# Starte bootstrap.bat und übergeben den zu verwendenden Compiler

 b2.exe --help			# Hilfe zu Boost.Build
 b2.exe --show-libraries	# Zeige Boost Library

 # Baue Boost (Bibliotheken die Probleme verursachen einfach abschalten mit --without-modul)
 b2.exe architecture=x86 address-model=32 toolset=gcc --without-mpi --without-python --without-graph --without-graph_parallel -j4 -q

Das in Boost mitgelieferte b2.exe (Boost.Build ) ist ein Make-Programm mit dem C++ Projekte erstellt werden. Releases werden an zwei unterschiedlichen Stellen auf github.com angeboten. Zum einen von der Gruppe boostorg und zum anderen eine aktuellere Version von bfgroup .

Die Dokumentation zu Boost.Build ist jeweils auf einer aktuellen Boost-Version zu finden oder bei dem bereits benannten Boost.Build Seiten.

Globale Boost-Variable in Codeblocks setzen

Setze die globale Variable boost in Codeblocks «Menu: Settings → Global Variables → New»

Spalte1 Spalte2
name = boost
base = C:\boostpath
lib = C:\boostpath\stage\lib

Jetzt können die globalen Variablen $(#boost) und $(#boost.lib) in deinen Projekt verwendet werden.

Boostbibliothek in einem Projekt verwenden

Um Boost in deinem Projekt zu verwenden, müssen die Suchverzeichnisse des Compilers und Linkers im «Menu: Project → Build Options» gesetzt werden.


 Search directories -> Compiler	Add = $(#boost)
 Search directories -> Linker	Add = $(#boost.lib)
 Linker Settings		Add = C:\\boostpath\\stage\\lib\\libboost_filesystem-xxxx.a
   

Anwendungsbeispiel mit boost\filesystem.hpp

Als Anwendungsbeispiel probieren wir die in Boost integrierten Funktionen zum Bearbeiten von Dateien und Verzeichnissen. Lege ein neues Konsolenprojekt in Codeblocks an und verwende den MinGW Compiler für 32bit Anwendung.

Hinweis: Die Anwendung muß mit dem gleichen MinGW/GCC-Compiler gebaut werden wie die Boostbibliothek.

main.cpp

 #include <iostream>
 #include <boost/filesystem.hpp>

 namespace fs=boost::filesystem;
 using namespace std;

 int main(int argc, char * argv[])
 {
    fs::path p = argv[0];
    cout  <<  "\nFileinfo\n" ;
    cout  <<  "  File argv[0]---------: " << argv[0] << '\n';
    cout  <<  "  Filesize-------------: " << fs::file_size(argv[0]) << '\n';
    cout  <<  '\n';
    cout  <<  "\ndecomposition:\n";
    cout  <<  "  root_name()----------: " << p.root_name() << '\n';
    cout  <<  "  root_directory()-----: " << p.root_directory() << '\n';
    cout  <<  "  root_path()----------: " << p.root_path() << '\n';
    cout  <<  "  relative_path()------: " << p.relative_path() << '\n';
    cout  <<  "  parent_path()--------: " << p.parent_path() << '\n';
    cout  <<  "  filename()-----------: " << p.filename() << '\n';
    cout  <<  "  stem()---------------: " << p.stem() << '\n';
    cout  <<  "  extension()----------: " << p.extension() << '\n';

    cout << "\n\nDie Boost-Bibliothek funzt." << endl;
    return 0;
 }

Weitere Info’s zu Boost gibt es hier und dort .

WX-Library in Codeblocks

Die wxWidgets sind ein plattformunabhängiges, quelloffenes GUI-Toolkit zur Entwicklung grafischer Benutzeroberflächen. Aktuelle oder alte wx-Releases findest du bei github.

Globale WX-Variable in Codeblocks setzten

Setzen der globalen Variable wx313 in Codeblocks «Menu: Settings → Global Variables → New»

Spalte1 Spalte2
name = wx313
base = C:\dev\wx-3.1.3
include = C:\dev\wx-3.1.3\include
lib = C:\dev\wx-3.1.3\lib\gcc810_dll

WX-Bibliothek in einem Projekt verwenden

Um die wxWidget-Bibliothek in einem Projekt zu verwenden, müssen die entsprechenden Verzeichnisse für den Compiler und Linker angepaßt werden. Selektiere dazu das Projekt und öffne die Build-Options... im «Menu: Project → Build‍-‍Options...»

Im Reiter Search directories sind folgende Einstellungen notwendig:


 Search directories -> Compiler			Add = $(#wx313.lib)\mswud
 Search directories -> Compiler			Add = $(#wx313.include)
 Search directories -> Linker			Add = $(#wx313.lib)
 Search directories -> Resource compiler	Add = $(#wx313.include)
   

Um die benötigten wx-Bibliotheken (libwx*.a) mit dem zu bauenden Programm zu verbinden, sind im Reiter Linker Settings die entsprechenden Dateien einzufügen.


 Linker Settings    -> Link libraries		Add = C:\dev\wxWidget\wx-3.1.3\lib\gcc810_dll\libwxbase31u.a
 Linker Settings    -> Link libraries		Add = C:\dev\wxWidget\wx-3.1.3\lib\gcc810_dll\libwxmsw31u_core.a
 Linker Settings    -> Link libraries		Add = C:\dev\wxWidget\wx-3.1.3\lib\gcc810_dll\libwxXXXX.a 
 Linker Settings    -> Link libraries		Add =  ... etc. ...
   

wxWidget aus den Sourcen erstellen

Zum erstellen der wxWidgets in Windows werden benötigt:

  • GNU-GCC-Compiler von MinGW (Codeblocks) oder TDM-GCC
  • CMake -Tool
  • wxWidget Quellen, z.B. 3.1.4

Das CMake-Toolset und der TDM-GCC Compiler lassen sich relativ unkonventionell und ohne Administratorrechte auf einem Windows 10 System installieren, bzw. in ein Verzeichnis legen. Die Community von wxWidget liefert glücklicherweise die für CMake erforderliche CMakeLists.txt mit. Damit ist ein komfortables erzeugen der wxWidget-Bibliothek unter Windows 10 möglich.

Nach dem Auspacken der Quellen und dem korrekten Setzen der Umgebungsvariablen zu den Verzeichnissen von CMake und TDM-GCC kann mit folgenden Befehlen operiert werden:

cmd.exe

 cmake.exe -G "MinGW Makefiles" -B .\\buildxxx -S .\\ -DCMAKE_BUILD_TYPE=Debug
 cmake.exe --build .\\buildxxx --verbose --clean-first 

Oder du nutzt diese vorgefertigte Batchdatei.

start.cmake.cmd

 echo off

 rem Umgebungspath setzen
 set PATH_MINGW=C:\dev\TDM-GCC-09.2.0-32\bin
 set PATH_CMAKE=C:\dev\cmake\bin
 echo %PATH%  | find /C /I "%PATH_MINGW%" || set PATH=%PATH%;%PATH_MINGW%
 echo %PATH%  | find /C /I "%PATH_CMAKE%" || set PATH=%PATH%;%PATH_CMAKE%

 rem Zeitstempel
 set CURTIME=%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%-%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%
 setlocal enabledelayedexpansion
 set CURTIME=!CURTIME:^ =0!
 setlocal disabledelayedexpansion

 rem Zielpath mit Zeitstempel
 set PATH_BUILD=.\build-%CURTIME%
	
 cmake.exe -G "MinGW Makefiles" -B %PATH_BUILD% -S .\ -DwxUSE_STL=ON -DCMAKE_BUILD_TYPE=Debug   > build-%CURTIME%.out.txt
 rem cmake.exe -G "MinGW Makefiles" -B %PATH_BUILD% -S .\ -DwxUSE_STL=ON -DCMAKE_BUILD_TYPE=Release   > build-%CURTIME%.out.txt

 pause
 cmake.exe --build %PATH_BUILD% --verbose --clean-first 

Für die Buildtypen Debug und Release muß das Script zweimal gestartet werden. Die erzeugten wxWidget-Dateien liegen im Verzeichnis: %PATH_BUILD%\lib. Alle darin enthaltenen Linkerdateien *.a und dynamischen Bibliotheken *.dll werden in ein Verzeichnis (z.B. lib\gcc920TDM_custom) zusammengelegt.


 .\lib\gcc920TDM_custom
      ├── libwx_baseu-3.1.dll.a
      ├── libwx_mswu_core-3.1.dll.a
      ├── ...
      ├── wxbase314u_gcc_custom.dll
      ├── wxmsw314u_core_gcc_custom.dll
      ├── ...
      ├── // und die Dateien fuer den Debugger ...
      ├── ...
      ├── libwx_baseud-3.1.dll.a
      ├── libwx_mswud_core-3.1.dll.a
      ├── ...
      ├── wxbase314ud_gcc_custom.dll
      ├── wxmsw314ud_core_gcc_custom.dll
      └── ...

Im Weiteren muss die Datei setup.h auf ihrem Platz.


 .\lib\gcc920TDM_custom
      ├── mswu
         └── wx
             └── setup.h
      └── mswud
          └── wx
              └── setup.h
Stichworte (tags)