wxWidget übersetzten mit MinGW

Da in C++ die Bibliotheken für jeden Compiler selbst erstellt werden müssen, hier eine Beschreibung wie das für den MinGW funktioniert.

Zuerst einmal müssen wir ins richtige Verzeichnis wechseln, und zwar nach:

…\wxWidget\build\msw

Mit diesem Befehl räumen wir erstmal das Verzeichnis auf:

mingw32-make -f makefile.gcc clean

Und mit diesem Befehl übersetzen wir nun die wxWidget Bibliothek:
(Es wird 2 mal übersetzt, damit wir bei CodeBlocks den Debug und den Release Modus für die Projekte benutzten können)

mingw32-make -f makefile.gcc USE_XRC=1 SHARED=1 MONOLITHIC=1 BUILD=debug UNICODE=1  
mingw32-make -f makefile.gcc USE_XRC=1 SHARED=1 MONOLITHIC=1 BUILD=release UNICODE=1

Danach erscheinen die Librarys in Verzeichnis lib\gcc_lib und die Header im Verzeichniss include. Dies könnte man jetzt noch ins MinGW-Verzeichnis kopieren oder man lässt sie liegen und stellt die Include-Verzeichnisse entsprechend auf den Ordner ein. Unter CodeBlocks kann man dies entsprechend unter den Variablen machen.

Bei der Verwendung von CodeBlocks zum erstellen eines wxWidget-Projekts müssen die Hacken nur ensprechend so gesetzt werden wie man Sie beim MAKE-Befehl mit angegeben hat (siehe oben).

Links:  http://www.pronix.de/pronix-1138.html


Nachtrag, da ich jedesmal wieder über die Namen im Build stossen und nicht weiß was sie bedeuten:

BUILD: Definiert ob eine Debug-Version oder eine Release-Version erstellt wird.

  • Eine Debug-Version erstellt die Libs mit einen “d”-Suffix - als Beispiel: “libwxmsw28d.a”/“wxmsw28d_gcc_custom.dll”
  • Eine Debug-Version erstellt die Ordner mswd bzw. mswud im wxWidget Library-Ordner
  • Eine Release-Version erstellt die Libs ohne den “d”-Suffix - als Beispiel: “libwxmsw28.a”/“wxmsw28_gcc_custom.dll”
  • Eine Release-Version erstellt die Ordner msw bzw. mswu im wxWidget Library-Ordner

SHARED: Definiert ob eine DLL (SHARED=1) oder eine Statische (SHARED=0) Version von wxWidget erstellt wird.

  • Eine DLL-Version von wxWidget erstllelt zu importierende Libs (wie libwxmsw28.a) und DLLs (so wie wxmsw28_gcc_custom.dll). Hier musst du die DLL mit deinem Programm verteilen.
  • Eine statische-Version von wxWidget erstellt nur statische Libs (so wie libwxmsw28.a), und es muss keine weitere DLL mit verteilt werden.

MONOLITHIC: MONOLITHIC steuert ob nur eine lib für alle Komponenten erstellt wird oder einzelne.

  • Ein Monolithic-Build erstellt eine einzelne zu importierente Library (so wie libwxmsw28.a) und eine einzelne DLL (so wie wxmsw28_gcc_custom.dll)
  • Ein Multilib-Build erstellt mehrere zu importierende Library (libwxexpat.a, libwxjpeg.a, etc.) Diese werden aber normalerweise für einen DLL-Build nicht benötigt, aber für einen Statischen-Build.

UNICODE: UNICODE gibt an ob die Library mit Unicode-Zeichen oder mit ANSI-Zeichen übersetzt wird.

  • UNICODE=1 erstellt die Libs mit einen “u”-Suffix - Beispiel: “libwxmsw28u.a”, “wxmsw28u_gcc_custom.dll”
  • UNICODE=0 erstellt die Libs ohne den “u”-Suffix - Beispiel: “libwxmsw28.a”, “wxmsw28_gcc_custom.dll”