make嵌套調用

創建目錄makefile_example以及三個子目錄a,b,c

~/makefile_example$ ls
a b c Makefile

其中makefile_example下的Makefile文件內容如下:

#** now you should to know why do we put two $ before entry **
#** because entry is a var in shell, while $$ stands for $ in makefile **
#** just like \\ stands for \ in c, $$entry will be translated into $entry in shell **

SUBDIRS := `ls .`
CURDIR := `pwd`
.PHONY : all clean
all :
@for entry in $(SUBDIRS);\
do\
   if test -d $(CURDIR)/$$entry; then\
    cd $$entry;\
    make -w;\
    cd ../;\
   fi;\
done

clean :
@for entry in $(SUBDIRS);\
do\
   if test -d $(CURDIR)/$$entry; then\
    cd $$entry;\
    make -w clean;\
    cd ../;\
   fi;\
done

a,b,c三個目錄下的Makefile內容如下:

.PHONY : all clean
all :
        @echo `pwd` "make"

clean :
        @echo `pwd` "clean"

然後分別在makefile_example目錄下執行makemake clean看效果吧:

~/makefile_example$ make

~/makefile_example$ make clean

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章