這是一個簡單的makefile。關於makefile的問題
我有2個問題。
- all:$(SOURCES)$(EXECUTABLE) 爲什麼把SOURCE放在依賴項中。
「.cpp.o:」 爲什麼不寫 「的.o:的.cpp」
CC=g++ CFLAGS=-c -Wall LDFLAGS= SOURCES=main.cpp hello.cpp factorial.cpp OBJECTS=$(SOURCES:.cpp=.o) EXECUTABLE=hello all: $(SOURCES) $(EXECUTABLE) $(EXECUTABLE): $(OBJECTS) $(CC) $(LDFLAGS) $(OBJECTS) -o [email protected] .cpp.o: $(CC) $(CFLAGS) $< -o [email protected]
如果SOURCE不作爲依賴項包含在內 - 那麼在修改源文件之後運行「make all」將導致可執行文件不被重新編譯。 – dave
.cpp.o:是一種舊式後綴規則,指示具有.cpp文件擴展名的文件可以通過運行後續命令轉換爲文件的.o版本。 http://www.gnu.org/software/make/manual/make.html#Suffix-Rules – dave