继续在此make文件中收到错误消息"没有规则来制作目标' /Main.cpp',需要' Main.o'
HOME = /home/
CC = g++ -Wall -pedantic
PROJ = $(HOME)/Proj1
INCL = -I $(PROJ)
all: main.x
main.x: List.o Summary.o Main.o
< TAB >:$(CC) -o main.x List.o Summary.o Main.o
List.o: $(PROJ)/List.h $(PROJ)/List.cpp
< TAB >$(CC) -c $(INCL) $(PROJ)/List.cpp
Summary.o: $(PROJ)/Summary.h $(PROJ)/Summary.cpp
< TAB >$(CC) -c $(INCL) $(PROJ)/Summary.cpp
Main.o: $(PROJ)/Main.cpp
< TAB >$(CC) -c $(INCL) $(PROJ)/Main.cpp
clean:
< TAB >rm -rf *.o *~ *.x
谢谢!
答案 0 :(得分:1)
我看到有两种可能性。第一个是在PROJ变量定义的末尾有一些无关的空格。在make中,保留了一行末尾的所有额外空格。所以,如果你这样写:
PROJ = $(HOME)/Proj1 # some whitespace at the end
变量的值将为'$(HOME)/Proj1 '
(包括空格 - 尽管没有引号)。然后,当您在先决条件列表中使用它时:
Main.o: $(PROJ)/Main.cpp
它扩展为:
Main.o: $(HOME)/Proj1 /Main.cpp
这是两个不同的先决条件:目录和不存在的文件/Main.cpp
。
如果不是这样,那么你向我们展示的makefile与你正在使用的makefile有所不同,因为你向我们展示的那个不应该显示那个错误。
答案 1 :(得分:0)
确保/home/Proj1/Main.cpp存在,否则Makefile看起来很好。 $(PROJ)/Main.cpp指向/home/Proj1/Main.cpp