Chinaunix首页 | 论坛 | 博客
  • 博客访问: 221395
  • 博文数量: 39
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 218
  • 用 户 组: 普通用户
  • 注册时间: 2013-11-06 12:33
文章分类
文章存档

2017年(2)

2015年(11)

2014年(18)

2013年(8)

我的朋友

分类: LINUX

2014-10-24 16:31:28

入门级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



阅读(2687) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~