所以我有makefile
HEADERS = preferences.h distances.h
OBJECTS = movie_recommender.o preferences.o distances.o
default: movie_recommender
%.o: %.c $(HEADERS)
; gcc -c $< -o $@
movie_recommender: $(OBJECTS)
; gcc $(OBJECTS) -o $@
clean:
; -rm -f $(OBJECTS)
; -rm -f movie_recommender
我收到错误:
No rule to make target 'movie_recommender.o', needed by 'movie_recommender'. Stop.
文件路径我尝试添加目标,
movie_recommender.o: movie_recommender.c
gcc -c movie_recommender.c
我收到另一个错误。谁能告诉我我在做什么错?非常感谢!
make
程序仅在中查看您的文件当前目录。当前目录中没有movie_recommender.c
文件,因此make
看不到它,也找不到任何方法来制作movie_recommender.o
。
解决方案是添加使您的makefile意识到源和标题目录,您可以使用vpath
指令来完成。如果添加
vpath %.c src
然后,它将在src
目录中自动寻找%.c
文件。
同样,make
找不到您的标题。
GCC也找不到标题,并且对make
的vpath
不了解,因此您需要将-Iinclude
传递给GCC。