C Makefile,目标存在时出现“无目标”的奇怪错误

时间:2018-04-02 22:39:13

标签: c makefile

所以我有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.

File paths 我试过添加目标,

movie_recommender.o: movie_recommender.c
    gcc -c movie_recommender.c

我收到另一个错误。谁能告诉我我做错了什么? 非常感谢!

1 个答案:

答案 0 :(得分:2)

make程序仅查找文件的当前目录。当前目录中没有movie_recommender.c个文件,因此make看不到它,也找不到任何方法{.1}}。

解决方案是添加make makefile,了解源和头目录,您可以with the vpath directive。如果你添加

movie_recommender.o

然后它会自动查找vpath %.c src 目录中的%.c个文件。

同样,src也找不到您的标题。

GCC也找不到标题,也无法了解make的{​​{1}},因此您需要将make传递给GCC。