歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Makefile之寫demo時的通用Makefile寫法

前面的一篇文章Makefile之大型工程項目子目錄Makefile的一種通用寫法介紹了大型項目子目錄Makefile的一種通用寫法,然而最近在寫Linux網絡方面的demo,一個目錄下有幾個文件,如果手工輸命令顯得太不專業了。於是按該博文的方法改編了一下Makefile,也當學習之用。該Makefile適用於一個C文件生成一個可執行程序的場景,使用該方法當工程目錄內的文件有增刪時無需對Makefile進行改動,可以說相當的智能。如果對patsubst、wildcard及subst函數不了解的話可參閱上述博文。同時在測試過程中,又發現了一種更簡潔的寫法,如代碼片段2,應該是使用了某些默認規則,由於項目較忙,還未來得及深入研究,先記錄下來,等空下來再研究,還望路過大俠多多指點。

1:如果在當前目錄中直接make的話使用下列代碼:

#General Purpose Makefile by guoqingbo
                         
objects := $(patsubst %.c,%.o,$(wildcard *.c)) 
executables := $(patsubst %.c,%,$(wildcard *.c)) 
                         
all :  $(objects)
$(objects) : %.o: %.c
    gcc -c $< -o $@
    gcc $< -o $(subst .o, ,$@)
clean :
    @rm -rf *.o *~
    @rm -rf ${executables}
 .PHONY : clean

2:後來發現下列代碼也可以有相同效果,難道使用了什麼默認規則,還不是很明白,先記錄下來:

#General Purpose Makefile by guoqingbo 
                           
executables := $(patsubst %.c,%,$(wildcard *.c))
                           
all : $(executables)

clean : 
    @rm -rf *.o *~ 
    @rm -rf ${executables} 
.PHONY : clean

 

Copyright © Linux教程網 All Rights Reserved