Makefile(GCC 编译器)中没有目标规则

问题描述 投票:0回答:2

在此 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
gcc makefile
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 不应显示该错误。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.