对makefile无法识别的文件的更改

时间:2018-05-31 05:41:18

标签: c++ shell makefile

由于我每次对文件进行更改时都会编写makefile,然后“make”,就好像我没有做任何更改一样。例如........

当我对Unit.cpp进行更改时,“make”我会收到此消息

make:没有什么可以为'all'做的。

目前我必须做'make clean'然后'make'才能识别更改。我知道这可能是一种愚蠢的做事方式,我想知道如何修改我的make文件,这样我每次做出更改时都不需要重新编译所有文件。

#makefile
# \ for line break
# this is variable for which compiler to use
CC = g++
CFLAGS = -c -Wall 
OBJFILES = main.o UnitList.o Unit.o  Write.o
# this is the name of target program
TARGET = run

all: $(TARGET) 

$(TARGET): $(OBJFILES)
    $(CC) $(OBJFILES) -o $(TARGET)

main.o:
    $(CC) $(CFLAGS) main.cpp

UnitList.o: 
    $(CC) $(CFLAGS) UnitList.cpp 

Unit.o:
    $(CC) $(CFLAGS) Unit.cpp

Write.o:
    $(CC) $(CFLAGS) Write.cpp

clean:
    rm -f $(OBJFILES) $(TARGET)

1 个答案:

答案 0 :(得分:1)

您需要列出生成文件中的所有依赖项。

例如,这个:

main.o:
    $(CC) $(CFLAGS) main.cpp

应该在依赖项列表中包含main.cpp:

main.o: main.cpp
    $(CC) $(CFLAGS) main.cpp

然后,当你改变main.cpp时,make know重新制作main.o。