入门级makefile递归调用示例,添加子目录在rule.mk中手动添加,如需自动添加,后续再给出示例。
1、主makefile
-
#SUBDIR+=subdir
-
TOPDIR=$(shell pwd)#调用shell 命令,默认的解析器为SHELL=/bin/sh
-
export TOPDIR#导出环境变量给子makefile使用
-
include $(TOPDIR)/rule.mk#加载.mk文件,实际上就是解析.mk里面的内容
-
-
all:$(SUBDIR)#默认的执行规则目标
-
@echo "*** star makefile test ***"#加上@符号,执行命令的时候不回显
-
@for dir in $(SUBDIR); \#在每个规则中,每一个命令行都是独立的shell子进程,故要实现一个复杂的shell,应保证在同一行,故使用\符号
-
do \
-
$(MAKE) -C $$dir || exit 1; \#$(MAKE)make默认的环境变量,为make,-C 表示到指定目录下去
-
done
-
-
.PHONY :clean#伪目标,调用方式make clean
-
clean:
-
$(RM) *.o#RM = rm -f 也是默认的环境变量
2、rule.mk
3、subdir下makefile
subdir1
-
include $(TOPDIR)/rule.mk
-
CURDIR=$(shell pwd)
-
GCC=gcc
-
TARGET=test
-
-
all:
-
@echo "*******makefiel in $(CURDIR) "
-
.PHONY:clean
-
clean:
-
$(RM) *.o $(TARGET)
subdir2
-
#SUBDIR+=subdir
-
include $(TOPDIR)/rule.mk
-
CURDIR=$(shell pwd)
-
all:
-
@echo "*** makefile in $(CURDIR)"
-
.PHONY :clean
-
clean:
-
$(RM) *.o
3、目录结构makefile platfrom/makefile driver/makefile
阅读(2734) | 评论(0) | 转发(0) |