这是我的生成文件:
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 中的 header 不存在。
#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/
知道为什么吗?
最佳答案
按照你的规则
$(NAME): $(OBJS)
对 $(OBJS)
的依赖将首先运行 make
的隐式 ℅.o : ℅.cpp
规则,然后使用$CXXFLAGS
,因此看不到 -I
选项。
在编写规则时,只需省略对 $(OBJS)
的依赖。
关于c++ - 我的 MakeFile 找不到我的头目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33814360/