Wie gezeichnete Objekte in wxWidgets bewegen?
-
Doch wieso muss ich die Quelldateien von wxShapeFramework überhaupt kompilieren? Zu was werden sie kompliert (doch nicht zu nem ausführbaren Programm, sondern wohl eher zu Objektdateien oder so? ).?
Wie Artchi schon gesagt hat, es wird eine Library und EXE-/BIN-Datei erzeugt. Viele Open-Source-Projekte veröffentlichen den Source um nicht für jedes einzelne unterstützte Betriebsystem kompillierte Daten veröffentlichen zu müssen.
Was genau hab ich denn nun eigentlich zu tun. Das Kauderwelsch von verwirrenden Dateien konnte ich zwar jetzt schon etwas vereinfachen, und weiß jetz grob welche Aufgaben einige von den unzähligen mitgelieferten Dateien haben, aber den Sinn des ganzen versteh ich irgendwie trotzdem nicht.
Lass dich nicht verwirren, die meisten Dateien wirst du nicht brauchen. Meistens geht es darum möglichst viele Möglichkeiten der Kompillierung zu bieten. Unter Linux reicht meistens folgendes Shell-Skript:
./configure make make install
-
Gut, dann hab ich das jetzt verstanden.
Jetzt stehe ich vor den Problemen wie ich das Makefile genau ausführe. Im Wikipedia Artikel zu "make" steht es gibt verschiedene tools mit denen man das machen kann. Unter Microsoft soll man wohl nmake benutzen, was irgendwie beim VC++ dabei sein soll. Gibt es eine andere Möglichkeit das unter MS auszuführen? Etwa direkt über die Commandozeile?
Was mich trotzdem etwas stutzig macht, wenn die Rede vom Kompilieren ist, sollte doch wenigstens ein Kompiler mit einbezogen werden. Ich habe hier den GCC, mit dem habe ich einfach mal prbiert deine beiden Befehle auszuführen, hat aber selbstverständlich nicht geklappt.
Irgendwie, ich weiß auch nicht, trotz eurer Hilfe versteht ich mittlerweile noch weniger als am Anfang ...
NACHTRAG:
Bin nun in in der "readme_src" noch auf folgende Anweisung gestoßen:
mingw32-make -f makefile.gcc WX_DIR=c:\path\to\my\wxWidgets WX_UNICODE=0/1 WX_DEBUG=0/1 WX_SHARED=0/1 WX_MONOLITHIC=0/1
Ich habs einfach ausprobiert und es hat sich sogar was bewegt, jedoch wurde dann mit folgender Fehlernelung abgebrochen:
The selected wxWidgets build is not availbale! Please use the options prefixed with WX_ to select another wxWidgets build.
Beim Pfad hab ich selbstverständlich den Pfad zu meinem wxWidgets Verzeichnis eingegeben.
-
Welchen Compiler nutzt du denn? Arbeitest Du mit MSVC? Dann mußt du auch mit MSVC die Lib bauen. Du kannst nicht MinGW benutzen, um Libs für MSVC zu bauen. Umgekehrt get es auch nicht. Wenn das so einfach wäre, würden die Entwickler von wxShapeFramework das auch so machen (eine Lib für alle Compiler bereitstellen, was aber ebend nicht geht).
Und nmake.exe kann man natürlich auch aus der Konsole aufrufen:
Start->Programme->MS VisualC++->VS Tools->Eingabeaufforderung/Command Prompt
Und dann funktionieren alle MSVC-Tools aus der Konsole. Hilfe zu nmake:
http://msdn.microsoft.com/de-de/library/dd9y37ha.aspxWenn du MinGW als Compiler nutzt, kann ich dir zu deinem speziellen Fehler allerdings leider nicht helfen (ich benutze wxWidgets nicht).
-
Hallo, ja ich benutze leider MinGW. Habe derzeit auch kein MSVC installiert. Ist es dann überhaupt möglich libs für meine IDE (wxDevC++) zu erstellen? Oder hat die IDE damit überhaupt nichts zu tun. In der "readme_src" steht auch noch folgender Absatz:
For Code::Blocks Workspace/Project files producing shared library with UNICODE support, using wxWidgets DLLs type:
> premake\premake-win32.exe --target cb-gcc --unicode --with-wx-shared --sharedFor MSVS 2005/2008 Workspace/Project files producing staticaly built library with UNICODE support and staticaly linked runtime
and no built-in wchar type:
> premake\premake-win32.exe --target vs2005 --unicode --static-runtime --no-builtin-wcharFor GNU makefile producing static library (static link of both wxWidgets libs and runtime) type:
> premake\premake-win32.exe --target gnu --unicode --static-runtimeIch weiß nicht, vielleicht hilft der ja noch für besseres Verständnis.
Mfg Felsen
-
Hallo, ja ich benutze leider MinGW. Habe derzeit auch kein MSVC installiert. Ist es dann überhaupt möglich libs für meine IDE (wxDevC++) zu erstellen? Oder hat die IDE damit überhaupt nichts zu tun.
Wieso leider?
Du scheinst da was falsch verstanden zu haben, sowohl mit MinGW als auch mit MSVC kann man Libs bauen, nur kann man keine mit MinGW (bzw. gcc) kompillierten Libs mit MSVC benutzen und umgekehrt!
For Code::Blocks Workspace/Project files producing shared library with UNICODE support, using wxWidgets DLLs type:
> premake\premake-win32.exe --target cb-gcc --unicode --with-wx-shared --sharedFor MSVS 2005/2008 Workspace/Project files producing staticaly built library with UNICODE support and staticaly linked runtime
and no built-in wchar type:
> premake\premake-win32.exe --target vs2005 --unicode --static-runtime --no-builtin-wcharFor GNU makefile producing static library (static link of both wxWidgets libs and runtime) type:
> premake\premake-win32.exe --target gnu --unicode --static-runtimewxShapeFramework bietet dir drei Möglichkeiten um die Library zu kompillieren, entweder mit Code::Blocks, mit Visual Studio 2005/2008 oder über ein Makefile. Wenn du mit MAKE arbeiten willst musst du also folgende Zeile ausführen:
premake\premake-win32.exe --target gnu --unicode --static-runtime
Nun werden die für eine Kompillierung mit Hilfe von MAKE notwendigen Dateien erstellt. Danach sollte mit der von dir angesprochenen Zeile...
mingw32-make -f makefile.gcc WX_DIR=c:\path\to\my\wxWidgets WX_UNICODE=0/1 WX_DEBUG=0/1 WX_SHARED=0/1 WX_MONOLITHIC=0/1
... eigentlich funktionieren (natürlich mit angepassten Parameter).
-
Felsen schrieb:
Hallo, ja ich benutze leider MinGW. Habe derzeit auch kein MSVC installiert. Ist es dann überhaupt möglich libs für meine IDE (wxDevC++) zu erstellen? Oder hat die IDE damit überhaupt nichts zu tun.
Die IDE ist einfach nur eine grafische Steuereinheit für den Compiler. Insofern hat eine IDE nichts zwangsweise mit dem Bauen von Libs am Hut. Klar kann eine IDE auch Libs bauen, aber das tut sie auch nur, in dem sie ein Kommandozeilen-basiertes Tool (wie make oder nmake) aufruft. Ob du jetzt in der IDE einen Knopf drückst, oder direkt make eingibst, ist egal.
Hatte nur gedacht, das du MSVC benutzt, weil du nmake angesprochen hattest.
-
Hallo,
wxShapeFramework bietet dir drei Möglichkeiten um die Library zu kompillieren, entweder mit Code::Blocks, mit Visual Studio 2005/2008 oder über ein Makefile.
Das verstehe ich leider nicht ganz. Ich will auch nicht unbedingt mit MAKEFILE arbeiten, ich will einfach nur dass es funktioniert, und das so wenig umständlich wie möglich. Aber nach eueren Erklärungen scheint es ja so zu sein, dass ich libs, die ich mit fremden IDE/Kompilern herstelle, ich dann später nicht in meiner IDE wxDevC++ bzw. mit meinem Kompiler gcc verwenden kann. Da ich ja weder MSVC noch Code::Blocks verwendet scheint doch der Weg über das MAKEFILE die einzige Möglichkeit zu sein, oder hab ichs wieder falsch verstanden.
Wenn ich folgende Zeile ausführe
premake\premake-win32.exe --target gnu --unicode --static-runtime
erhalte ich folgende Fehlermeldung:
No Premake scripts found!
Wo befinden sich denn normalerweise diese premake skripts, irgendwo in diesem rießigen Dateiwirrwarr werden sie ja wahrscheinlich mitgeliefert worden sein. Hab schon die verschiedensten Dateien die es sein könnten mit in den Ordner in dem ich den MAKE Prozess aufrufe, hineinkopiert, aber alles ohne Erfolg, die Meldung bleibt die selbe. Ich habe testweise auch mal probiert das ganze für Code::Blocks zu kompilieren, aber wie zu erwarten auch da der selbe Fehler.
Hatte nur gedacht, das du MSVC benutzt, weil du nmake angesprochen hattest.
Nein, hatte nmake nur deswegen angesprochen, weil ich befürchtet habe, die meisten make Programme würden nur unter Linux laufen, und nmake war das einzige dass ich auf die schnelle mit Windows in Verbindung bringen konnte, aber eben leider nur in Kombination mit MSVC das ich nicht habe und mir auch ungern besorgen möchte.
Noch eine kleine Information aus der Hilfe zum Abschluss, die wichtig sein könnte, bei der ich aber auch nicht weiß, wie ich sie zuordnen soll:
When building on win32, go to the ./build subdirectory and simply type:
> create_build_files.bat
There are few standard build configurations defined in the batch file and you can freely modify it or you can
inkove the premake system directly as follows:Examples of usage of the premake scripts:
... anschließend kämen noch die Anweisungen für die einzelnen Kompiliervorgäbge, aber die hab ich ja oben schon mal abgedruckt. Dieses genannte Batch File, hab ich auch ausgeführt, dadurch enstanten folgende Beiden Dateien:
wxShapeFramework.sln
wxShapeFramework.workspaceSpielen etwa diese Dateien auch eine Rolle?
Ich hoffe ihr werdet mit dem allen besser fertig als ich, ich hab versucht so viel Informationen zu geben wie möglich. Ich raffs einfach nicht. Bitte helft.
Mfg Felsen
WICHTIGER NACHTRAG:
Es ist nun folgendes passiert: Ich hab einfach mal die premake-win32.exe aus dem premake Verzeichnis ins build Verzeichnis kopiert, weil von da an alle Dateien zur Verfügung stehen und hab dann einfach obigen premake-build Befehl nochmal ausgeführt, und (!!!) es hat sich tatsächlich was getan. Es wurde angezeigt, dass nun die Makefiles erstellt wurden. Ich habe jetzt eine "wxsf.bkl" und noch ein paar nebensächliche Dateien für Beispiele erhalten.
Anschließend hab ich dann gleich versucht das Makefile auf folgende Weise auszuführen:
> mingw32-make -f makefile.gcc WX_DIR=C:\wxWidgets-2.8.9
und ich erhalte die gewohnte Meldung
The selectes wxWidgtes build is noch available! Please use the options prefixed with WX_ to select another wxWidgets build
Was genau verstehen die denn unter einer wxWidgets build?
-
Felsen schrieb:
Das verstehe ich leider nicht ganz. Ich will auch nicht unbedingt mit MAKEFILE arbeiten, ich will einfach nur dass es funktioniert, und das so wenig umständlich wie möglich. Aber nach eueren Erklärungen scheint es ja so zu sein, dass ich libs, die ich mit fremden IDE/Kompilern herstelle, ich dann später nicht in meiner IDE wxDevC++ bzw. mit meinem Kompiler gcc verwenden kann. Da ich ja weder MSVC noch Code::Blocks verwendet scheint doch der Weg über das MAKEFILE die einzige Möglichkeit zu sein, oder hab ichs wieder falsch verstanden.
Du hast leider noch ein Verständnisproblem, auch wenn dein Fazit korrekt ist.
Was ist eine IDE? Eine grafische Oberfläsche die die Entwicklung vereinfacht. Ist in jeder IDE ein Compiler verpflanzt? Nein, eher selten. Deshalb hier mal ein Crashkurs:
Menschen benutzen Compiler.
Build-Tools benutzen Compiler.
IDEs benutzen Compiler.So, du als Mensch kannst einen Compiler über die Konsole benutzen, z.B. so:
g++.exe main.cpp
Damit kompilierst und linkst du dein C++-Programm. Was macht ein Buildtool wie make? Genau, es macht das was du machen würdest. Was macht eine IDE? Das was du machen würdest.
Was benutzt Code Blocks für einen Compiler? GCC MinGW, ICC, MSC o.a.
Was benutzt VisualC++ für einen Compiler? MSC, ICC o.a.
Was benutzt DevC++ für einen Compiler? GCC MinGW.Welche Build-Tools gibt es? make, bjam, Scons u.a.
OK? IDEs aber bringen auch eigene Build-Tools mit, obwohl sie auch fremde Build-Tools benutzen können.
Du siehst so langsam, worauf das hinaus läft? IDEs sind nur grafische Front-Ends die fremde Tools für dich fernsteuern (benutzen).
Was heißt das für dich? Du mußt wissen, was DevC++ benutzt! DevC++ hat einen GCC MinGW Compiler dabei. Auch wenn DevC++ der letzte Schrott ist, weil es seit Jahren nicht mehr gepflegt wird, weißt du:
"ich muss die Libs für MinGW bauen! Wie, ist egal!"Schauen wir mal:
wxShapeFramework bietet dir drei Möglichkeiten um die Library zu kompillieren, entweder mit Code::Blocks, mit Visual Studio 2005/2008 oder über ein Makefile.
CB und MSVC haben eigene Build-Tools eingebaut. Es ist erstmal unerheblich das es IDEs sind! Du kannst z.B. CB zum bauen benutzen, wenn CB mit dem MinGW ausgestattet ist. Und dann die Libs in deinem DevC++ benutzen. Warum? Weil DevC++ auch MinGW benutzt.
Was ist der beste Kompromiss bei den ganzen Möglichkeiten? Ein Build-Tool das IDE-unabhängig ist. Und make ist ein Build-Tool von vielen... und das älteste.
Dieses genannte Batch File, hab ich auch ausgeführt, dadurch enstanten folgende Beiden Dateien:
wxShapeFramework.sln
wxShapeFramework.workspaceSpielen etwa diese Dateien auch eine Rolle?
Hier hast du dir Build-Files für das MSVC erzeugen lassen. D.h. du könntest jetzt für und mit MSVC den Build-Vorgang starten, wenn du denn MSVC hättest. Hast du nicht, willst du nicht. Also nutzlos für dich.
-
Gut, da ich es ja wie durch ein Wunder geschafft habe das MAKEFILE wxSF.bkl zu erstellen, muss ich es ja jetzt nur noch durch dieses seltsame Programm "make" (ich nehme mal an es handelt sich hier einfach um meinen gcc Kompiler) schicken. Dabei bekomme ich aber zur oben abgerduckte Meldung, dass mein wxWidgets build nicht auffindbar ist. Was bedeutet das?
-
Ich würde dir empfehlen das mit premake.exe und dann über C::B zu lösen. Sowieso ist ein Umstieg von DevC++ auf C::B eine Überlegung wert.