C 生成文件,当目标存在时出现奇怪的"No target"错误



所以我有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也找不到标题,并且对makevpath不了解,因此您需要将-Iinclude传递给GCC。

相关内容

最新更新