编译所有子目录的makefile

时间:2021-08-23 12:46:33

经常有人需要顺序编译一个一个的模块,最后才连接生成可执行程序,但是如果一个模块一个模块地执行make,比较马法,下面是一个经过验证的makefile;
可以根据自己的需要修改SUBDIRS宏的值,设定自己需要编译的目录的顺序.就可以了.

##############################
# file   Makefile
# author  chenli
# date  2008-02-01
###############################
 


#编译所有子目录
#SUBDIRS=`ls -d */ | grep -v 'bin' | grep -v 'lib' | grep -v 'include'`

#编译指定子目录
SUBDIRS=dir1 dir2 dir3

define make_subdir
 @for subdir in $(SUBDIRS) ; do /
 ( cd $$subdir && make $1) /
 done;
endef

all:
 $(call make_subdir , all)
 
install :
 $(call make_subdir , install)
 
debug:
 $(call make_subdir , debug)
clean:
 $(call make_subdir , clean)