Wie ist es möglich wxWidgets mit UltraEdit (bzw. Texteditor/Kommandozeile) zu nutzen? [Gelöst]
-
Hallo!
Das ist wahscheinlich auf den ersten Blick eine sehr blöde Frage, denn im Web gibt es ja tausende Quellen zum Kompilieren von wxWidgets. Allerdings muss ich einwenden, dass ich bisher nichts gefunden habe, was mir weiterhilft. Ich frage einfach mal...Ich habe UltraEdit, MinGW, MSYS und wxPack installiert. Ziel ist es, Dateien/Projekte mit UltraEdit als Entwicklungsumgebung zu erstellen/kompilieren. Was muss ich jetzt aber evtl. in path setzen und was muss ich dann aufrufen um den Kompiliervorgang zu starten?
(Falls es ohne UltraEdit leichter ist: wie ginge es, bei einem normalen Texteditor?)
(Ich stelle mir das ganze so in der Art vor, wie ich es bei Qt konnte. So hatte ich dort die Afrufe "qmake -project", "qmake" und "make" um das Ganze zu kompilieren.)
-
Keine Ahnung, was bei UltraEdit speziell angepasst werden muss. Aber wenn ich WX mit dem MinGW compiliere, öffne ich einfach eine Shell und tippe folgendes ein:
cd <wxWidgets-path>\build\msw
mingw32-make -f makefile.gcc BUILD=release SHARED=1 MONOLITHIC=1 UNICODE=1<wxWidgets-path> ist das Verzeichnis, wo WX entpackt wurde.
MSYS oder ähnlichen Kasperkram habe ich nicht installiert. Ich denke die Flags sind selbsterklärend, ansonsten siehe WX-Doku.
-
Bei UltraEdit gibt es die Möglichkeit die Kommandozeilenbefehle quasi asbzuspeichern um sie dann -automatisch an die jeweilige Datei angepasst- aufzurufen.
Vielen Dank auch schonmal für die Hilfe. Allerdings verstehe ich nicht ganz, worher MinGW nun wissen soll, welche Dateien er kompilieren soll. Es ist ja nirgends ein Pfad zu meinen Dateien angegeben.
(Vielleicht ein Missverständnis? Ich will nicht wxWidgets kompilieren (das ist durch wxPack schon getan), sondern Dateien, die wx-Code beinhalten.)
-
Normalerweise sollte bei der wxWidgets-Installation ein Kommandozeilenprogramm wx-config dabei sein. Mit diesem kannst Du u.a. die nötigen Argumente für den C++-Compiler und den Linker abrufen.
Argumente für den Compiler:
wx-config -cxxflags
Argumente für den Linker:
wx-config --libs
Das Ergebnis dieser Aufrufe kannst Du dann zwischenspeichern (oder direkt substituieren, falls UltraEdit das kann) und in die Aufrufe für Compiler und Linker einbauen, also z.B. so (hier in Bash-Syntax):
g++ `wx-config --cxxflags` -o test.o test.cpp g++ -o test.exe test.o `wx-config --libs`
-
g++: `wx-config: No such file or directory g++: no input files
Soweit die Fehlermeldung beim Aufruf. Ich vermute jetzt mal, dass das daran liegen könnte, dass ich noch irgendwas in path setzen muss. Allerdings ist dort der Pfad zum Ordner (der lib etc. enthält) bereits eingetragen.
(Was sind denn eigentlich diese .o Dateien? Diese werden doch nicht für diesen Vorgang benötigt, oder?)
-
Diese Apostrophe sind in der Bash-Syntax dafür da, um Befehle in anderen abzusetzen, das war nur eine symbolische Schreibweise. Was ich meinte ist, dass Ultraedit evtl. so etwas bietet, wenn nicht, dann mach einfach Folgendes:
Führe die beiden Aufrufe von wx-config auf, kopier die Ausgabe und setze sie dann an die Stelle im g++-Aufruf. Das kannst Du dann in Ultraedit speichern.Die .o-Dateien sind die Objekt-Dateien, die vom Compiler generiert werden. Klar kann man Compiler und Linker in einem Schritt ausführen, aber gerade bei komplizierteren Aufrufen, wie hier mit den ganzen Optionen für wxWidgets, finde ich es übersichtlicher, beides zu trennen, und dafür ist es ganz hilfreich, den Namen der Ausgabedateien explizit anzugeben.
-
Chewie83 schrieb:
Führe die beiden Aufrufe von wx-config auf, kopier die Ausgabe und setze sie dann an die Stelle im g++-Aufruf. Das kannst Du dann in Ultraedit speichern.
Ich versteh nicht ganz was du meinst. Das Problem ist, das wx-config nicht gefunden wird. Auch wenn ich die Abostrophe weglasse.
-
Schade. Kann sein, dass das bei wxPack fehlt. Als ich das letzte Mal wxWidgets unter Windows aus den Quellen erstellt hab, war das Tool dabei. Erspart einem halt etwas Arbeit.
Ansonsten wirst Du anhand der Doku zu wxPack lernen müssen, wie man Programme per Kommandozeile erstellt und die entsprechenden Optionen dann in Ultraedit eintragen müssen.
-
Ok, ich hab das wxPack deinstalliert und wxWidgets selber kompiliert. Es ist wirklich so, dass wx-config nur vorhanden ist, wenn man es selber kompiliert. Allerdings funktioniert das ganze immer noch nicht so einwandfrei. Die Samples kann ich erstellen. Und auch wenn ich etwas per MSYS mit
g++ minimal.cpp `wx-config --libs` `wx-config --cxxflags` -o minimal
kompilieren will, funktionet es einwandfrei. Wie kann ich das ganze jetzt aber in UltraEdit portieren? Das heißt es müsste so funktionieren, dass ich es auch in cmd eingeben könnte. Allerdings versteht Windows ja irgendwie wie nix von -> ` <-. Und wenn ich die `` weglasse, kann weder wx-config gefunden, noch etwas mit den Parametern angefangen werden.
-
Wie gesagt, kopier die Ausgabe von wx-config raus und füge sie in den Kommandozeilenaufruf von g++ ein. Das, was wx-config ausgibt, ändert sich ja nicht, sondern bleibt gleich.
-
Welche Ausgabe von wx-config? Wenn ich zum Beispiel einfach wx-config in der MSYS Konsole eingebe, erscheint lediglich ein Hilfetext. Und in cmd kann der Begriff wx-config nicht gefunden werden.
----
Ah, ok. Ich habe jetzt nochmal wx-config --libs komplett eingegeben. Dann erscheint die Ausgabe, die du wahrscheinlich meintest. Das ganze habe ich jetzt in den cmd-Aufruf eingefügt. Scheint auch so weit zu klappen. Das einzige Problem ist, dass er jetzt wx/wx.h und wx/defs.h nicht findet. Und daraus entstehen dann wahrscheinlich die tausenden anderen Fehler (von wegen "____ was not declared in this scope" etc.).
Die Frage ist jetzt nur, wie krieg ich das noch hin? Der include Ordner ist bereits in path eingetragen.
-
Wie sieht denn mit der Ausgabe von "wx-config -cxxflags" der Aufruf von G++ aus? Und liegen diese Header-Dateien wirklich in dem dort angegebenen Verzeichnis?
-
Juhu! Endlich klappt es. Das letzte Problem wurde dadurch verursacht, dass der Text (der ja normalerweise durch wx-config gespart werden könnte) zu lang war. Ich hab diesen jetzt aber als Umgebungsvariable gesetzt und dann sozusagen mein eigenes wx-config erstellt.
Vielen Dank!