gcc 看不到 SDL

gcc can't see SDL

我正在尝试使用 MinGW 编译 this code,但我收到此错误,尽管我安装了 SDL2:

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 $@ $(OBJS) $(SDL_LIBS) -lz

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

-include $(DEPS)

如果你不正确地告诉它,GCC 就不知道也看不到你想要什么。安装是一回事,提供 INCLUDELIB 目录的路径是另一回事。

您正在 运行在 Microsoft Windows 命令提示符中编写您的代码,因此使用反引号无效。在bash中,它用于获取一个命令的输出并将其放置到位,因此您必须手动运行。手动 运行 sdl2-config --cflagssdl2-config --libs 并将它们替换为您的 makefile 中的输出。

根据您安装 SDL 的路径,这是为您准备的示例 Makefile:

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 $@ $(OBJS) $(SDL_LIBS) -lz

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

-include $(DEPS)

否则,您可以将 bash 用于 Windows,以在 Windows 中拥有 bash 的所有强大功能,没有任何问题。