前面的一篇博文Makefile之大型工程項目子目錄Makefile的一種通用寫法介紹了大型項目子目錄Makefile的一種通用寫法,然而最近在寫Linux網絡方面的demo,一個目錄下有幾個文件,若是手工輸命令顯得太不專業了。因而按該博文的方法改編了一下Makefile,也當學習之用。該Makefile適用於一個C文件生成一個可執行程序的場景(代碼片斷3適用於多個C文件生成一個可執行程序),使用該方法當工程目錄內的文件有增刪時無需對Makefile進行改動,能夠說至關的智能。若是對patsubst、wildcard及subst函數不瞭解的話可參閱上述博文。同時在測試過程當中,又發現了一種更簡潔的寫法,如代碼片斷2,應該是使用了某些隱式規則,因爲項目較忙,還將來得及深刻研究,先記錄下來,等空下來再研究,還望路過大俠多多指點。網絡
1:若是在當前目錄中直接make的話使用下列代碼:函數
#General Purpose Makefile by guoqingbo學習
objects := $(patsubst %.c,%.o,$(wildcard *.c)) 測試
executables := $(patsubst %.c,%,$(wildcard *.c)) spa
all : $(objects).net
$(objects) : %.o: %.c orm
gcc -c $< -o $@blog
gcc $< -o $(subst .o, ,$@) get
clean :it
@rm -rf *.o *~
@rm -rf ${executables}
.PHONY : clean