g ++:没有这样的文件或目录?

时间:2012-06-05 10:45:15

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

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

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

这是我的makefile。 (任何关于让它变得更好的建议都会很棒。无论我能找到什么工作,我都会受到打击。)

#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)

1 个答案:

答案 0 :(得分:4)

您可以在规则中交换$(CFLAGS)$(SDL_CFLAGS)$(TARGET)或更好地从-o移除CFLAGS并将其直接放在{{1}之前}}:

$@

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