因为每次我对文件进行更改然后“制作”文件时我的 makefile 是如何编写的,就好像我没有进行任何更改一样。例如…………
当我对 Unit.cpp 进行更改然后“make”时,我收到此消息
make: 没有什么可以为 `all' 做的。
目前我必须先“清理”然后“制作”才能识别更改。我知道这可能是一种愚蠢的做事方式,我想知道如何修改我的 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)
最佳答案
您需要在 makefile 中列出所有依赖项。
例如,这个:
main.o:
$(CC) $(CFLAGS) main.cpp
应该在依赖列表中有 main.cpp:
main.o: main.cpp
$(CC) $(CFLAGS) main.cpp
然后,当您更改 main.cpp 时,make knows 重新制作 main.o。
关于c++ - 对 makefile 无法识别的文件所做的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50617365/