我有這些文件製作始終運行爲目標 「所有」,即使沒有什麼更新
- Test.cpp的
- Point.h
- Point.cpp
- Triangle.h
- Triangle.cpp
我想要一個makefile,允許我構建每個類Point
和Triangle
分別通過在需要時發佈make Point
或make Triangle
(頭文件或源文件已更改)。如果需要,make all
應編譯所有內容並構建輸出程序Test
。
這就是我來了這麼遠:
CXX=g++
CXXFLAGS=-std=c++11 -Wall -pedantic
OBJS=Test.o Point.o Triangle.o
all : $(OBJS)
$(CXX) $(CXXFLAGS) $(OBJS) -o Test
Point.o : Point.cpp Point.h
$(CXX) $(CXXFLAGS) -c Point.cpp
Point : Point.o
Triangle.o : Triangle.h Triangle.cpp Point.h
$(CXX) $(CXXFLAGS) -c Triangle.cpp
Triangle : Triangle.o
clean:
\rm *.o Test
.PHONY : Point Triangle
看來工作,但問題是,當我運行make all
(或只是make
)多次運行,即使沒有命令已經改變,給出以下輸出:
g++ -std=c++11 -Wall -pedantic Test.o Point.o Triangle.o -o Test
我希望它能說出類似於「沒有任何事情要爲'全部'」。或類似的東西,就像其他目標一樣。我錯過了什麼?
他的「全部」取決於「Test.o Point.o Triangle.o」。一旦創建了這些內容,重複構建不應該跳過該過程嗎? – blackpen
@blackpen不,它不會那樣工作。 'all'不是一個真正的目標,它沒有一個可以比較時間戳的實際文件。 – taskinoor
是的,當然。 「全部」不存在,因此時間戳也不存在。所以,它重新啓動。 – blackpen