在Makefile中使用“make”作为一个命令来执行本身或者其他makefile文件。递归调用在一个存在多级子目录的项目中非常有用。
subsystem:
cd subdir && $(MAKE)
等价于
subsystem:
$(MAKE) -C subdir
###################
$(MAKE) -C $(SRC_DIR_CGI)
意思是进入目录$(SRC_DIR_CGI) ,然后在子目录下面执行make 。
$(MAKE) -C $(SRC_DIR_CGI) clean
意思是进入目录$(SRC_DIR_CGI) ,然后在子目录下面执行make clean。
####################################
#leo Makfile install web files
####################################
CC=/var/smb/leo/wifi/projs/udisk/Ralink305x/toolchain/buildroot-gcc342/bin/mipsel-linux-gcc
LD=/var/smb/leo/wifi/projs/udisk/Ralink305x/toolchain/buildroot-gcc342/bin/mipsel-linux-gcc
OUT_DIR= $(PWD)/web
SRC_DIR= $(PWD)
SRC_DIR_FILES= $(SRC_DIR)/files
SRC_DIR_CGI= $(SRC_DIR)/cgi-bin
OUT_DIR_FILES= $(OUT_DIR)/files
OUT_DIR_CGI= $(OUT_DIR)/cgi-bin
#SUB_DIR = $(SRC_DIR_CGI)
#########################################################
#########################################################
all: clean subsystem install
subsystem:
$(MAKE) -C $(SRC_DIR_CGI)
#$(MAKE) -C $(SRC_DIR_FILES)
#$(MAKE) -C $(SUB_DIR)
install:
@echo "out files dir is $(OUT_DIR)..."
mkdir -p $(OUT_DIR)
mkdir -p $(OUT_DIR_CGI)
mkdir -p $(OUT_DIR_FILES)
cp $(SRC_DIR_CGI)/*.cgi $(OUT_DIR_CGI)/
cp $(SRC_DIR_FILES)/* $(OUT_DIR_FILES)/
cp $(SRC_DIR)/*.html $(OUT_DIR)/
chmod 766 $(OUT_DIR_FILES)/*
chmod +x $(OUT_DIR_CGI)/*
clean:
rm -fr $(OUT_DIR)
$(MAKE) -C $(SRC_DIR_CGI) clean