在處理C++項目時,我注意到我正在修改主代碼中鏈接的頭文件之一,但make實用程序沒有註冊它。如果使用「make-B」進行更改,我必須強制它進行不同的編譯。瞭解Makefile的相關性(C++)
我想知道爲什麼會這樣;是因爲我的makefile是如何寫入的,我的文件如何依賴於彼此,兩者還是兩者都不相同?
這裏是我的makefile:
CXXFLAGS = -Wall -Werror -std=c++11 -pedantic -Wvla -g
//CXXFLAGS = -std=c++11
all: main.o game.o zombie.o
g++ $(FLAGS) game.o main.o zombie.o -o main $(CXXFLAGS)
game: game.cpp
g++ $(FLAGS) -c game.cpp $(CXXFLAGS)
zombie: zombie.cpp
g++ $(FLAGS) -c zombie.cpp $(CXXFLAGS)
main: main.cpp
g++ $(FLAGS) -c main.cpp pairing_heap.h $(CXXFLAGS)
我做了更改pairing_heap.h
這是在我的主文件包含(#include)。
爲什麼沒有注意到它應該再次編譯?因爲我覺得這是一個概念誤解,所以我覺得沒有必要包括我做的改變或者當我做「make-B」時的輸出差異。他們是簡單的東西,如新的pairing_heap.h中包含的cout和cerr,直到被強制時纔會被拾取。
讓我知道是否需要提供更多信息。
謝謝。
感謝您解釋大圖,然後深入細節。很教學;我可以挖掘它。我預見到我和makefile之間的關係會更好。 – 2015-02-10 20:17:34