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 就不知道也看不到你想要什么。安装是一回事,提供 INCLUDE
和 LIB
目录的路径是另一回事。
您正在 运行在 Microsoft Windows 命令提示符中编写您的代码,因此使用反引号无效。在bash中,它用于获取一个命令的输出并将其放置到位,因此您必须手动运行。手动 运行 sdl2-config --cflags
和 sdl2-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 的所有强大功能,没有任何问题。
我正在尝试使用 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 就不知道也看不到你想要什么。安装是一回事,提供 INCLUDE
和 LIB
目录的路径是另一回事。
您正在 运行在 Microsoft Windows 命令提示符中编写您的代码,因此使用反引号无效。在bash中,它用于获取一个命令的输出并将其放置到位,因此您必须手动运行。手动 运行 sdl2-config --cflags
和 sdl2-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 的所有强大功能,没有任何问题。