0

在这个 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

谢谢!

4

2 回答 2

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 在某些方面有所不同,因为您向我们展示的 makefile 不应该显示该错误。

于 2013-09-16T19:26:09.967 回答
0

确保 /home/Proj1/Main.cpp 存在,否则 Makefile 看起来不错。$(PROJ)/Main.cpp 指向 /home/Proj1/Main.cpp

于 2013-09-16T17:30:57.860 回答