0

Makefile のセットアップと SDL の両方の使用にはまだ慣れていませんが、Makefile を正しく動作させるのに問題があります。それが私のmakefileの問題なのか、それともSDLに問題があるのか​​ わかりません。これが私のメイクファイルです:

#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

メイクファイルを正しく使用する方法をまとめようとしていますが、メイクファイルで見つけたほとんどすべてのサイトで、まったく異なる使用方法が示されているため、学ぶのが難しくなっています。

4

1 に答える 1

1

メイクファイルの問題です。このビットに到達すると:

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)

-o オプションを含めないように CFLAGS を変更します。

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

プロセスを自動化する前に、手動でビルドする方法 (つまり、自分でコマンド ラインから g++ を使用する) を学ぶこともおそらく役立つと思います。

于 2012-06-04T01:41:07.423 に答える