2017-10-08 7 views
-1
#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が必要であることを見つけ出し、再コンパイルします。しかし、なぜ?誰も私にそれを説明できますか?メークファイルがクリーンでないと再コンパイルしません。

+0

'-MD'オプションと' include * .d'を見てください。 – o11c

答えて

1

に依存する必要があるファイルは.oであり、実行可能ファイルではありません(レシピには記載しないでください)。

+0

こんにちは、私はちょうどメイクファイルを更新します。今回はBST.hppの変更が再コンパイルされると思いますか? – Chen

+0

@Chen:あなたの質問から質問を編集しないでください。近くに見えますが、まだいくつかの '$(BSTHPP)'があります。 –

+0

これは実際には問題があります。だから、実行可能ファイルに依存する実行可能ファイルは、再コンパイルをやめさせるでしょうか? – Chen

関連する問題