2012-06-05 4 views
0

(На Linux, пытаясь настроить SDL) У меня есть время с make-файлами, мне сложно их изучить. Вот ошибка, которую я получаю.g ++: Нет такого файла или каталога?

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) [email protected] $(LDFLAGS) $(OBJS) $(SDL_LDFLAGS) $(LIBS) 
%.o: src/%.cpp 
     g++ -c $(SDL_CFLAGS) $< $(SDL_LDFLAGS) 

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

Можете ли вы показать полный вывод компиляции – Brady

ответ

4

Вы можете либо обмен $(CFLAGS) и $(SDL_CFLAGS) в правиле, чтобы сделать $(TARGET) или лучше удалить -o из CFLAGS и поместить его непосредственно перед [email protected]:

... 
CFLAGS = -Wall 
... 
$(TARGET): $(OBJS) 
     g++ $(CFLAGS) $(SDL_CFLAGS) -o [email protected] $(LDFLAGS) $(OBJS) $(SDL_LDFLAGS) $(LIBS) 

-o вариант должен непосредственно предшествовать имя исполняемого файла, который будет производиться. В вашем оригинале Makefile он является частью $(CFLAGS), а за ним следуют флаги C библиотеки SDL. Поэтому компилятор пытается связать в game.exe ([email protected]) вместо создания исполняемого файла под этим именем.

+0

Спасибо, это сработало! Я застрял на этом больше часа. – cgasser

Смежные вопросы