0

(在 Linux 上,尝试设置 SDL)我正在使用 makefile,我发现它们很难学习。这是我得到的错误。

g++: error: game.exe: No such file or directory
make: *** [game.exe] Error 1

这是我的生成文件。(任何关于让它变得更好的建议都会很棒。我只是把我能找到的任何工作都拼凑在一起。)

#Game Make file
TARGET = game.exe
OBJS = App.o\
   App_OnInit.o\
   App_OnEvent.o\
   App_OnLoop.o\
   App_OnRender.o \
   App_OnCleanup.o\

SDL_CFLAGS := $(shell sdl-config --cflags)
SDL_LDFLAGS := $(shell sdl-config --libs)
CFLAGS = -Wall -o
LIBS =
LDFLAGS = 

$(TARGET): $(OBJS)
       g++ $(CFLAGS) $(SDL_CFLAGS) $@  $(LDFLAGS) $(OBJS) $(SDL_LDFLAGS) $(LIBS)
%.o: src/%.cpp
       g++  -c $(SDL_CFLAGS) $< $(SDL_LDFLAGS)

.PHONY: clean
clean:
    rm -f $(TARGET) $(OBJS)
4

1 回答 1

4

您可以交换$(CFLAGS)$(SDL_CFLAGS)在规则中制作$(TARGET)或更好地删除-o并将CFLAGS其直接放在之前$@

...
CFLAGS = -Wall
...
$(TARGET): $(OBJS)
       g++ $(CFLAGS) $(SDL_CFLAGS) -o $@  $(LDFLAGS) $(OBJS) $(SDL_LDFLAGS) $(LIBS)

-o选项应紧接在要生成的可执行文件的名称之前。在您的原始文件中,它是SDL 库的 C 标志的Makefile一部分,后面跟着它。$(CFLAGS)因此,编译器尝试链接game.exe(the $@) 而不是生成该名称的可执行文件。

于 2012-06-05T10:49:41.917 回答