(在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)
答案 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
),而不是按该名称生成可执行文件。