Makefile和SDL有问题

时间:2012-06-04 01:21:48

标签: c++ linux makefile g++ sdl

我仍然习惯于设置Makefile并使用SDL,而且我无法让makefile正常工作。我不知道我的makefile是否有问题,或者我是否对SDL做错了。这是我的make文件:

#Game Make file
EXEC = game.exe
OBJS = App.o\
   App_OnInit.o\
   App_OnEvent.o\
   App_OnLoop.o\
   App_OnRender.o \
   App_OnCleanup.o
CC = g++ 

CFLAGS = -o $(shell sdl-config --cflags) 
LIBS =
LDFLAGS = $(shell sdl-config --libs)

$(EXEC): $(OBJS)
       $(CC) $(CFLAGS) $(LDFLAGS) $@ $(OBJS) $(LIBS)
%.o: src/%.cpp
       $(CC) -c $<

.PHONY: clean
clean:
    rm -f $(EXEC) $(OBJS) *~

当我尝试制作它时虽然我明白了:

g++ -c src/App.cpp
g++ -c src/App_OnInit.cpp
g++ -c src/App_OnEvent.cpp
g++ -c src/App_OnLoop.cpp
g++ -c src/App_OnRender.cpp
g++ -c src/App_OnCleanup.cpp
g++ -o -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT  -L/usr/lib/i386-linux-gnu -lSDL           game.exe App.o App_OnInit.o App_OnEvent.o App_OnLoop.o App_OnRender.o App_OnCleanup.o 
g++: error: game.exe: No such file or directory
make: *** [game.exe] Error 1

我正在尝试拼凑如何正确使用makefile,但我发现的大多数网站都会向您显示使用它们的完全不同的方式,这使得它们难以学习。 < / p>

1 个答案:

答案 0 :(得分:1)

这是makefile的一个问题。当它到达这一点时:

g++ -o -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT  -L/usr/lib/i386-linux-gnu -lSDL           game.exe App.o App_OnInit.o App_OnEvent.o App_OnLoop.o App_OnRender.o App_OnCleanup.o 

-o选项设置输出文件的名称。你想要更像的东西:

g++ -o game.exe -I/usr/include/SDL ...

我对Makefile没有太热,但我的猜测是这样的:

$(EXEC) : $(OBJS)
    $(CC) -o $@ $(CFLAGS) $(LDFLAGS) $(OBJS)

并将CFLAGS更改为不包含-o选项:

CFLAGS = $(shell sdl-config --cflags)

我认为在尝试自动化流程之前,学习如何手动构建它(即自己从命令行使用g ++)可能也会有所帮助。