wxWidgets in CodeBlocks nutzen (wie kompilieren und was linken?)
-
Hallo,
na hoffentlich sitzt bei diesem Wetter überhaupt jemand vorm PC (ich bin halb draußen)...
Ich war vor einiger Zeit schon mal hier, weil ich mit der WinApi anfing - damit habe ich auch schnell wieder aufgehört. Zuviel Flexibilität (für das was ich momentan vorhabe) und zuwenig Flexibilität in Hinsicht auf andere OSes (..OSse..).
Mir wurde auch zum SDL geraten - also kam nach der WinApi-Einführung eine SDL-Einführung. Ich musste nämlich feststellen, dass ich mir mit SDL jeden Knopf selbst zusammenbauen muss - das geht ja in der WinApi einfacher..
Aber SDL lässt sich immerhin einfach installieren! Ein vorkompiliertes Paket 'runterladen, 2-3 Dateien linken und die .dll ins Programm-Verzeichnis schleppen.Ich nutze CodeBlocks + MinGW 4.8.1, kurz gesagt habe ich mir das IDE-Paket zugelegt, damit ich nicht direkt am Compiler rumfummeln muss.
So, und jetzt kommt wxWidgets...
Entweder Source herunterladen, oder Binaries für MinGW-TDM.. erstmal letzteres:
-Kann ich das auch für den normalen MinGW nutzen????Wahrscheinlich nicht, also selbst kompilieren:
-Die Anleitungen, die ich dazu gefunden habe, funktionieren bei mir nicht.
(z.B. : http://wiki.wxwidgets.org/CodeBlocks_Setup_Guide )
Genauer gesagt habe ich im cmd.exe keinen allgemein gültigen befeht "mingw32-make" (hat das was mit Admin-/Nicht-Admin-Sein zutun?).
Also habe ich mir eine Verknüpfung auf die mingw32-make.exe im CodeBlocks-MinGW-Verzeichnis angelegt, die im wxWidgets-Source-Verzeichnis mit den entsprechenden Parametern ( -f makefile.gcc BUILD=release SHARED=1 MONOLITHIC=1 UNICODE=1 CXXFLAGS=-fno-keep-inline-dllexport ) ausgeführt wird.Was Passiert?! Die Konsole öffnet sich kurz, und dort steht:
gcc -c -o gcc_mswudll\wxregex_regcomp.o -O2 -mthreads -DHAVE_W32API_H -DNDEBUG
-I..\..\include -I..\..\lib\gcc_dll\mswu -D__WXMSW__ -D_UNICODE -MTgcc_mswud
ll\wxregex_regcomp.o -MFgcc_mswudll\wxregex_regcomp.o.d -MD -MP ../../src/regex/
regcomp.cAußerdem gibts einen leeren Ordner mit Namen "gcc_mswudll" gratis dazu.
Sonst passiert, soweit ich das sehen kann nichts weiter.Also ganz einfache Frage, was mache ich hier falsch, und wie mache ich es richtig?
Ein anderer Ansatz war, MinGW-TDM zu installieren. Aber dafür liefert mir CodeBlocks keine zusätzlichen Compiler-Optionen, so wie es bei dem ersten Ausführen nach der Installation der Fall war..
Liegt es daran, dass der MinGW-TDM letztlich auch ein MinGW ist, und das Original Vorrang hat?Ich würde dem Gefühl nach lieber den originalen Compiler nutzen.
Rational würde ich gerne den Compiler benutzen, der mir lizenz-technisch möglichst viel erlaubt, und generell möglichst leicht ist. Auf welchen (der beiden) Compiler trifft das eher zu?Noch eine Frage zum Schluss...
Wenn ich dann mal eine funktionierende Bibliothek besitze, die ca. so aussieht, wie die vorkompilierten wxWidgets-Binaries für MinGW-TDM, welche Libs muss ich dann wann linken, und in welcher Reihenfolge???
Dazu habe ich exakt garnichts im Netz gefunden...Das wärs auch schon...

MfG,
Klon457
-
Dieser Thread wurde von Moderator/in Arcoth aus dem Forum C++ (auch C++0x und C++11) in das Forum Compiler- und IDE-Forum verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Wow, das ging aber schnell...
Sorry, muss ich übersehen haben!
-
Genauer gesagt habe ich im cmd.exe keinen allgemein gültigen befeht "mingw32-make" (hat das was mit Admin-/Nicht-Admin-Sein zutun?).
Das hat ggf. damit zu tun dass du vergessen hast, den Ordner der mingw32-make enthält zum PATH hinzuzufügen (eine Umgebungsvariable unter Windows).
Aber dafür liefert mir CodeBlocks keine zusätzlichen Compiler-Optionen, so wie es bei dem ersten Ausführen nach der Installation der Fall war..
Du musst unter CodeBlocks für jeden Compiler (und jede Version welche du benutzen willst) einen Compiler "anlegen".
Settings => Compiler => Den der bei dir MinGW repräsentiert in der Dropdown-Liste auswählen (Gnu GCC?) => Copy.
Dann den Namen anpassen (MinGW-TDM o.ä.) und auf den Reiter "Toolchain Executables" gehen. Dort setzt du alle Pfade entsprechend.
-
Danke für den Hinweis mit der Path-Variablen!!
(Warum wird die nicht automaisch bei der Installation eingerichtet?!!)
Er kompiliert gerade... (denke ich). Ich bin ja mal gespannt, was dabei raus kommt.Sehe ich das richtig, dass ich mir die Lib genau für diesen Kompilator kompiliere? Also kann ich z.B. mit MinGW nicht für MSVC kompilieren??
Kannst du mir vielleicht gerade noch sagen, was es mit dem "clean"-Befehl an mingw32-make auf sich hat?
Wie gesagt, bislang hat sich die IDE darum gekümmert...Und warum hört er auf, wenn ich das nicht mittels Konsole, sondern über eine Verknüpfung mache?
Hat zufällig jemand noch eine Meinung zu der Compiler-Wahl (MinGW oder MinGW-TDM)?
Ich kann irgendwie noch nicht überblicken, wozu das selbst-kompilieren gut sein soll. Man hat zwar mit Befehlen an die Makefile, z.B. "USE_XRC=1 SHARED=1 MONOLITHIC=1 BUILD=release UNICODE=0" ,noch die Möglichkeit das was raus kommt zu beeinflussen. Aber auch hier fehlt mir der Überblick, wuzu die einzenlnen Optionen gut sein sollen..
Ist hier auch rein zufällig jemand da, der sich mit wxWidgets auskennt und mir das erklären kann??
Und auch noch erklärt, wie ich welche Libs wann linken muss?Jedanfalls nochmals Danke für den Tipp! Eine funktionierende Lib ist erstmal die Grundlage..
..Er kompiliert immernoch...
-
Kon457 schrieb:
Kannst du mir vielleicht gerade noch sagen, was es mit dem "clean"-Befehl an mingw32-make auf sich hat?
"clean" löscht alle Object-Files und andere Artefakte des Kompilierungsprozesses.
Kon457 schrieb:
Und warum hört er auf, wenn ich das nicht mittels Konsole, sondern über eine Verknüpfung mache?
-
"clean" löscht alle Object-Files und andere Artefakte des Kompilierungsprozesses.
Okay danke, hört sich gut an. Und wen ich vorher nicht aufräume? Können die Dateien dann wieder verwendet werden, oder warum könnte man "clean" auch weg lassen?
Sowas habe ich, falls nötig immer mit cin.get() lösen können. Aber das meinte ich nicht.
Ich habe versucht die Lib, statt mittels Konsole (und mingw32-make.exe + Parameter), mit einer Verknüpfung auf mingw32-make.exe samt Parametern zu kompilieren. Dabei sieht es aber so aus, als würde der Vorgang nach dem ersten Schritt einfach abgebrochen, im Ggs. zur Konsolenausführung.Naja, mit dem Kompilieren war er dann auch irgendwann fertig, und wxWidgets scheint auch zu laufen.
Also gegenüber SDL brauchen wxWdiget-Programme ja extrem lange zum kompilieren...
Und ich bin mir nicht sicher, ob mir die Implementierung, im Vgl. zu SDL, bzw. WinAPI - die sind sich ja schon ähnlich, gefällt. So ganz ohne main() etc..
Und sehe ich das richtig, dass man mit wxWidgets in Sachen Speicherbedarf quasi immer einen Klotz am Bein hat? -Vielleicht ist das der Grund, warum CodeBlocks so lange zum Laden braucht...
-
Ach ja,...
Ich hatte versucht mir in CodeBlocks ein wxWidgets-Template-Projekt zu erstellen.
Das konnte ich allerdings nicht kompilieren, weil mir da einige Dateien fehlen.Ein "Hello World"-Programm aus gem Netz kompiliert aber ohne Probleme. (Build-Optionen selbst eingerichtet etc.)
Also was ist hier los?! Ich hoffe ja, dass die Vorlage in CodeBlocks einfach für eine ältere Version von wxWidgets gedacht ist und es darum nicht geht.
Oder, dass CodeBlocks noch weitere wxWidgets-Libs voraussetzt (aber woher soll man wissen welche?). Ich also nichts falsch gemacht habe.
Kann mich da jemand beruhigen?!Hier z.B. findet er mathplot.h nicht, oder auch treelistctrl.h (ich finde nur treelist.h in wxWidgets)
//(*Headers(wxProj1Dialog) #include <mathplot.h> #include <wx/sizer.h> #include <wx/stattext.h> #include <wx/statline.h> #include <mpMarker.h> #include <wx/treelistctrl.h> #include <wx/button.h> #include <wx/dialog.h> //*)Was ist das überhaupt für ein Konstrukt?? CodeBlocks färbt das durchgängig blau-grau, also nicht grün wie sonstige #include-s, oder hellgrau wie Kommentare, sondern eher bläulich..
MfG,
Klon457