makefile递归调用实例

来源:互联网 发布:绝地求生淘宝不卖 编辑:程序博客网 时间:2024/05/05 14:45
入门级makefile递归调用示例,添加子目录在rule.mk中手动添加,如需自动添加,后续再给出示例。
1、主makefile

点击(此处)折叠或打开

  1. #SUBDIR+=subdir
  2. TOPDIR=$(shell pwd)#调用shell 命令,默认的解析器为SHELL=/bin/sh
  3. export TOPDIR#导出环境变量给子makefile使用
  4. include $(TOPDIR)/rule.mk#加载.mk文件,实际上就是解析.mk里面的内容

  5. all:$(SUBDIR)#默认的执行规则目标
  6.     @echo "*** star makefile test ***"#加上@符号,执行命令的时候不回显
  7.     @for dir in $(SUBDIR);\#在每个规则中,每一个命令行都是独立的shell子进程,故要实现一个复杂的shell,应保证在同一行,故使用\符号
  8.         do \
  9.         $(MAKE)-C $$dir ||exit 1; \#$(MAKE)make默认的环境变量,为make,-C 表示到指定目录下去
  10.         done

  11. .PHONY :clean#伪目标,调用方式make clean
  12. clean:
  13.     $(RM)*.o#RM = rm -f 也是默认的环境变量
2、rule.mk

点击(此处)折叠或打开

  1. SUBDIR:=platform driver
3、subdir下makefile
subdir1

点击(此处)折叠或打开

  1. include $(TOPDIR)/rule.mk
  2. CURDIR=$(shell pwd)
  3. GCC=gcc
  4. TARGET=test

  5. all:
  6.     @echo "*******makefiel in $(CURDIR) "
  7. .PHONY:clean
  8. clean:
  9.     $(RM)*.o $(TARGET)
subdir2

点击(此处)折叠或打开

  1. #SUBDIR+=subdir
  2. include $(TOPDIR)/rule.mk
  3. CURDIR=$(shell pwd)
  4. all:
  5.     @echo "*** makefile in $(CURDIR)"
  6. .PHONY :clean
  7. clean:
  8.     $(RM)*.o
3、目录结构makefile platfrom/makefile driver/makefile


0 0
原创粉丝点击