我有项目结构:
项目:
makefile如下:
inc = -I include
run : $(addprefix obj/,doubly-circular-linked-list.o node.o main.o)
$(CXX) $^ -o bin/$@
obj/%.o : $(addprefix src/,$(patsubst %.o,%.c,doubly-circular-linked-list.o node.o main.o))
$(CXX) $(inc) -c $< -o obj/$@
.PHONY : clean
clean :
rm -f obj/*.o bin/run
在制作时会出现以下错误:
*** No rule to make target 'obj/doubly-circular-linked-list.o', needed by 'run'. Stop.
请告诉我哪里出错了。
答案 0 :(得分:1)
该错误意味着您有一行以选项卡开头,该选项卡无法找到它所属的目标。
在这种情况下,我认为你的问题是
的错字 %.o = $(addprefix src/,$(patsubst %.o,%.c,doubly-circular-linked-list.o node.o main.o))
线。具体来说,您有=
而不是:
。
据说这意识到该行将每个 .c
文件分配为每个 .o
文件的先决条件(即不是一对一.c
到.o
文件映射。)