2016-04-30 51 views
1

我試圖編譯this code使用MinGW,但我得到這個錯誤,雖然我已經安裝了SDL2:GCC不能看到SDL

Error

Makefile文件看起來是這樣的:

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

[第0課:MinGW(設置SDL)](http://www.willusher.io/sdl2%20tutorials/2013/08/15/lesson-0-mingw)。 –

+0

是的,我確定它已安裝。我甚至試着將'SDL.h'複製到代碼的目錄中,只是爲了測試,我仍然得到這個錯誤 –

+0

從鏈接的課程:'#include ' –

回答

1

如果你不正確地告訴它,GCC不知道並且看到你想要的東西。安裝是一回事,爲INCLUDELIB目錄提供路徑是另一回事。

您正在Microsoft Windows命令提示符下運行您的代碼,因此使用反引號將不起作用。在bash中,它用於獲取一個命令的輸出並將其放置到位,因此您必須手動運行它。手動運行sdl2-config --cflagssdl2-config --libs,並將它們替換爲makefile中的輸出。

這是給你一個Makefile例子,根據您已安裝SDL的路徑:

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) 

否則,你可以使用bash的Windows在Windows中具有的bash的所有強大功能,沒有任何問題。

+0

「使用Windows的bash」。請問您可以稍微擴展一下這個話題,或者提供一個鏈接?說實話,我並不熟悉那個(或者一般的C++編碼)。 –

+0

@GeorgeHovhannisian好吧,我會這麼做的。但首先檢查Makefile並查看它是否有效。 – Ho1

+0

'Makefile:21:***缺少分隔符。停止。「猜測只是一個複製錯誤,從原來的複製行。然後我得到:'make:***沒有規則來製作目標'/ MinGW/lib',這是'aifcplayer.o'需要的。停止.' –