如果不是make clean,Makefile不会重新编译

时间:2017-10-08 19:38:31

标签: c++ makefile g++

#use g++ for everything
CC= g++

# include debugging symbols in object files,
# and enable all warnings
FLAGS= -g -Wall -std=c++11

BSTHPP= BST.hpp BSTNode.hpp BSTIterator.hpp

all: main

bst: testBST.o $(BSTHPP)
        $(CC) $(FLAGS) -o bst testBST.o $(BSTHPP)

main: main.o $(BSTHPP)
        $(CC) $(FLAGS) -o main main.o $(BSTHPP)

main.o: $(BSTHPP)
        $(CC) $(FLAGS) -c main.cpp

testBST.o: testBST.cpp
        $(CC) $(FLAGS) -c testBST.cpp

clean:
        $(RM) main bst *.o

我更改了BST.hpp文件,然后运行make bst。但我调试了几次,首先找出我需要make clean,然后重新编译。但为什么?有人能解释一下吗?

1 个答案:

答案 0 :(得分:1)

.o文件需要依赖.hpp,而不是可执行文件(在配方中也不应该提及)。