2015-11-19 4 views
0

Это мой Makefile:Мой Makefile не может найти мой каталог заголовка

NAME = pong 

SRCS = src/main.cpp 

OBJS = $(SRCS:.cpp=.o) 

CFLAGS += -lsfml-graphics -lsfml-window -lsfml-system -I include/ 

all: $(NAME) 

$(NAME): $(OBJS) 
    g++ -o $(NAME) $(SRCS) $(CFLAGS) 

clean: 
    rm -f $(OBJS) 

fclean: clean 
    rm -f $(NAME) 

re: fclean all 

.PHONY: all clean fclean re 

Когда я make, он говорит мне, что заголовок я включил в моем main.ccp не существует.

#include "prototypes.hpp" 

Это моя организация проекта:

. 
├── a.out 
├── include 
│   └── prototypes.hpp 
├── Makefile 
├── src 
│   └── main.cpp 
└── test 

И странное дело в том, что эта работа, когда я

g++ -o test src/main.cpp -lsfml-graphics -lsfml-window -lsfml-system -I include/ 

Любая идея, почему?

+0

Действительно ли это говорит вам, или это g ++? –

+1

Это g ++. 'g ++ -c -o src/main.o src/main.cpp src/main.cpp: 2: 26: фатальная ошибка: prototypes.hpp: Aucun fichier ou dossier de ce type #include" prototypes.hpp " ^ сбор завершено. ' –

ответ

1

С вашего правилом

$(NAME): $(OBJS) 

зависимость от $(OBJS) будет работать make сек неявного ℅.o : ℅.cpp правила первым, который, в свою очередь, использует $CXXFLAGS и, таким образом, не видит варианта -I.

Как ваше правило написано, просто опустите зависимость от $(OBJS).

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