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