2016-04-30 8 views
1

Ich versuche this code mit MinGW zu kompilieren, aber ich habe diesen Fehler, obwohl ich SDL2 installiert:gcc nicht sehen kann SDL

Error

Das Makefile wie folgt aussieht:

SDL_CFLAGS = `sdl2-config --cflags` 
SDL_LIBS = `sdl2-config --libs` -lSDL2_mixer -lGL 

DEFINES = -DBYPASS_PROTECTION 

CXXFLAGS := -g -O -MMD -Wall $(SDL_CFLAGS) $(DEFINES) 

SRCS = aifcplayer.cpp bitmap.cpp file.cpp engine.cpp graphics_gl.cpp graphics_soft.cpp \ 
    script.cpp mixer.cpp pak.cpp resource.cpp resource_nth.cpp resource_win31.cpp \ 
    resource_3do.cpp systemstub_sdl.cpp sfxplayer.cpp staticres.cpp unpack.cpp \ 
    util.cpp video.cpp main.cpp 

OBJS = $(SRCS:.cpp=.o) 
DEPS = $(SRCS:.cpp=.d) 

rawgl: $(OBJS) 
    $(CXX) $(LDFLAGS) -o [email protected] $(OBJS) $(SDL_LIBS) -lz 

clean: 
    rm -f $(OBJS) $(DEPS) 

-include $(DEPS) 
+0

[Lektion 0: MinGW (Einrichten von SDL)] (http://www.willusher.io/sdl2%20tutorials/2013/08/15/lesson-0-mingw). –

+0

Ja, ich bin mir sicher, dass es installiert ist. Ich habe sogar versucht, 'SDL.h' in das Verzeichnis des Codes zu kopieren, nur um zu testen, und ich habe immer noch diesen Fehler –

+0

Aus der verknüpften Lektion:' #include ' –

Antwort

1

GCC weiß nicht und sehen was Sie wollen, wenn Sie es nicht richtig sagen. Die Installation ist eine Sache, und die Bereitstellung des Pfades zu den Verzeichnissen INCLUDE und LIB ist eine andere Sache.

Sie führen Ihren Code in der Microsoft Windows-Eingabeaufforderung aus, sodass die Verwendung von Backticks nicht funktioniert. In bash wird es verwendet, um die Ausgabe eines Befehls zu erhalten und es zu platzieren, also müssen Sie es manuell ausführen. Führen Sie sdl2-config --cflags und sdl2-config --libs manuell aus und ersetzen Sie sie durch die Ausgabe in Ihrem Makefile.

Dies ist ein Beispiel Makefile für Sie, nach dem Pfad, den Sie SDL installiert haben:

SDL_CFLAGS = -I C:/MinGW/include/SDL2 
SDL_LIBS = -L C:/MinGW/lib -lSDL2main -lSDL2 -lSDL2_mixer -lGL 

DEFINES = -DBYPASS_PROTECTION 

CXXFLAGS := -g -O -MMD -Wall $(SDL_CFLAGS) $(DEFINES) 

SRCS = aifcplayer.cpp bitmap.cpp file.cpp engine.cpp graphics_gl.cpp graphics_soft.cpp \ 
    script.cpp mixer.cpp pak.cpp resource.cpp resource_nth.cpp resource_win31.cpp \ 
    resource_3do.cpp systemstub_sdl.cpp sfxplayer.cpp staticres.cpp unpack.cpp \ 
    util.cpp video.cpp main.cpp 

OBJS = $(SRCS:.cpp=.o) 
DEPS = $(SRCS:.cpp=.d) 

rawgl: $(OBJS) 
    $(CXX) $(LDFLAGS) -o [email protected] $(OBJS) $(SDL_LIBS) -lz 

clean: 
    rm -f $(OBJS) $(DEPS) 

-include $(DEPS) 

Andernfalls Sie bash for Windows verwenden können, ohne Probleme all die großartigen Features von bash in Windows zu haben.

+0

" Bash für Windows verwenden ". Könnten Sie bitte etwas zu diesem Thema weiter ausführen oder einen Link bereitstellen? Ich bin überhaupt nicht damit vertraut (oder C++ - Codierung im Allgemeinen), um ehrlich zu sein. –

+0

@GeorgeHovhannisian Ok, ich werde das tun. Aber überprüfe zuerst das Makefile und schau, ob es funktioniert. – Ho1

+0

'Makefile: 21: *** fehlt Separator. Stoppen Sie. Raten Sie nur einen Kopierfehler, kopierte die Linie vom Original zurück. Und dann bekomme ich: 'make: *** Keine Regel, um das Ziel'/MinGW/lib 'zu machen, benötigt von 'aifcplayer.o'. Stop.' –