C++ 对makefile无法识别的文件的更改
因为每次我对一个文件进行更改,然后像没有做任何更改一样“使”它时,我的makefile是如何编写的。例如 当我对Unit.cpp进行更改时,“make”会收到此消息 make:对“所有人”都不做任何事 目前,我必须先进行“清理”,然后再进行“制作”,以便识别更改。我知道这可能是一种愚蠢的做法,我想知道如何修改我的make文件,这样每次修改时就不需要重新编译所有的文件C++ 对makefile无法识别的文件的更改,c++,shell,makefile,C++,Shell,Makefile,因为每次我对一个文件进行更改,然后像没有做任何更改一样“使”它时,我的makefile是如何编写的。例如 当我对Unit.cpp进行更改时,“make”会收到此消息 make:对“所有人”都不做任何事 目前,我必须先进行“清理”,然后再进行“制作”,以便识别更改。我知道这可能是一种愚蠢的做法,我想知道如何修改我的make文件,这样每次修改时就不需要重新编译所有的文件 #makefile # \ for line break # this is variable for which compile
#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知道重新生成main.o.谢谢您的帮助。5分钟后我接受。我的印象是make能够推断出依赖关系?我想不是。或者在某些情况下可以吗?如果您不创建自己的规则,而是让make使用自己的内置规则,那么这些内置规则可以推断出源文件的先决条件。如果您提供自己的规则,那么您必须自己提供依赖项信息。毕竟,您的
main.o
文件可能并不依赖于任何东西,而是完全不同的东西。