假设我有文件:
库:
- 一.cpp,一.h
- 两个.cpp,两个.h
- 三.cpp, 三.h
程序:
- 程序.cpp
有没有办法创建只编译从上次编译中修改的 *.cpp 的 Makefile?
目前我有这样的事情:
SRCS = one.cpp two.cpp three.cpp
OBJS = $(SRCS:.cpp=.o)
all: $(OBJS) program
.cpp.o:
g++ -Wall -c $<
program:
g++ -Wall $(OBJS) program.cpp -o program
clean:
rm -f $(OBJS) program
我工作得很好,但是当我编译我的程序然后更改 two.cpp 或 two.h 时,我需要先运行“make clean”,因为当我第二次运行“make”时,我得到:
Nothing to be done for 'all'.
我想以这种方式更改我的 Makefile,它会识别我的更改并重新编译该文件及其依赖项(如果 one.cpp 使用来自 two.cpp 的已修改代码,则应重新编译这两个文件)。
因此,如果我修改 two.cpp,make 应该这样做:
g++ -Wall -c two.cpp
g++ -Wall $(OBJS) program.cpp -o program
但是,如果 one.cpp 使用了 two.cpp 中的修改后的代码,请执行以下操作:
g++ -Wall -c one.cpp
g++ -Wall -c two.cpp
g++ -Wall $(OBJS) program.cpp -o program