SDL Anwendungen unter Windows mit MinGW und der CMD-Shell compilieren.
-
Servus,
Ich möchte den Sourcecode von Anwendungen, die die SDL-Bibliothek verwenden.
Funktioniert mit der MSYS-Shell wirklich prima.
Ich möchte aber auch gerne die CMD-Shell zum kompilieren nutzten können, jedoch funktioniert das nicht wirklich, wenn ich folgendes in die Shell schreibe:
LW:\Verzeichnis> g++ main.cpp -o main `sdl-config --cflags --libs` g++: `sdl-config: No such file or directory cc1plus.exe: error: unrecognized command line option "-fcflags" cc1plus.exe: error: unrecognized command line option "-flibs`" LW:\Verzeichnis>Nun ist es ja so, dass die MSYS-Shell sämtliche Pfade und Umgebungszeug von MinGW im Vorraus weiß, d.h. ich muss für MSYS keine Umgebungsvariablen für Windows setzten.
Nun da ich aber für "normales" Programmieren ohne SDL-Bibliothek nicht MSYS benutze sondern rein MinGW und die CMD-Shell.Lange Rede - Kurzer Sinn. Ich will mit der CMD-Shell genauso wie mit der MSYS-Shell das SDL-Anwendungen kompilieren können.
Ich habe auch shcon versucht statt nur "... `sdl-config ..." den kompletten Pfad zu der Datei hinzuschreiben.
Was aufs gleiche hinausläuft, irgendwie auch logisch ich habe ja das MinGW/bin Verzeichnis in PAHT eingetragen.
Auch wenn ich das ganze in einer MAKEFILE tarne will es nicht so, wie es soll.Target := SDLApp
SUF = .exe
Sources := main.cppUSERCPPFLAGS =
USERCXXFLAGS = -I/E/Programme/SDL/include
USERLDFLAGS = -L/E/Programme/SDL/libCPPFLAGS = $(USERCPPFLAGS)
CXXFLAGS = $(USERCXXFLAGS)
LDFLAGS = $(USERLDFLAGS)build:
(CXX) $(CPPFLAGS) $(CXXFLAGS) $(Sources) -o (SUF) $(LDFLAGS) `sdl-config --cflags --libs`Die sdl-config nervt mich ein wenig, da ohne dieser Datei offensichtlich nichts funktioniert, auch wenn ich so zimlich alle Libs dem Linker vor die Füße wirf, die irgendwas mit SDL zutun haben könnte (idR. sind das folgende Flags: -lSDL, -lSDL_main und -lmingw32 (muss soweit ich weiß auch dazu))
Wisst ihr weiter?
mfg RungAaz
-
Man möge mir für die große Anzahl meiner Rechtschreibfehler verzeihen, aber es gibt für unreigstrierte User keine solche Funktion.
-
Also bei mir hat es mit folgendem Befehl gut geklappt
gcc -I"Pfad\zu\sdl\include" -L"pfad\zu\sdl\lib" programm.c -lmingw32 -lSDL_main -lSDL -o programmFrage mich aber nicht warum man mingw32 noch extra mit angeben muss^^ .
-
Ruf mal in der cmd einfach sdl-config --cflags --libs auf. Das Ergebnis setzt du anstatt des Aufrufs `sdl-config --cflags --libs` bei g++ ein.
Lars
-
Vielen, vielen, herzlichen Dank!
Mit folgender Zeile hab ich es jetzt doch noch zum Laufen gebracht:
g++ -IE:/Programme/SDL/include main.cpp -o HelloWorld.exe -LE:/Programme/SDL/lib -lmingw32 -lSDLmain -lSDLAls ich es früher probiert habe damit zu kompilieren, habe ich statt -lSDLmain -lSDL*_*main geschrieben, was dazu führte, dass Make die Bibliothek nicht gefunden hat.
@Lars
Die MSYS-Shell spuckt mir folgendes bei sdl-config --cflags --libs aus:-I/usr/local/include/SDL -D_GNU_SOURCE=1 -Dmain=SDL_main -L/usr/local/lib -lmingw32 -lSDLmain -lSDL -mwindowsHalf mir leider für die CMD-Shell nicht wirklich weiter, da ich absolut keinen Peil habe, wo bei mir "usr/local/bin" ist, zumindest habe ich in dem MSYS Verzeichnis nichts dergleichen gefunden.
mfg RungAaz
-
Allerdings fällt mir auf, dass nun beim Starten der Anwendung ein Konsolenfenster erscheint. Kann man das irgendwie deaktivieren?
mfg RungAaz
-
Nun dafür musst du -mwindows wegnehmen!
-
Deinen Enthusiasmus in Ehren, aber anscheinend hat das für 5 Jahre lang niemanden so sehr interessiert, dass er noch einmal nachgefragt hätte
