創建目錄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目錄下執行make和make clean看效果吧:
~/makefile_example$ make
~/makefile_example$ make clean