Chinaunix首页 | 论坛 | 博客
  • 博客访问: 144195
  • 博文数量: 46
  • 博客积分: 329
  • 博客等级: 一等列兵
  • 技术积分: 318
  • 用 户 组: 普通用户
  • 注册时间: 2011-12-04 01:45
文章分类

全部博文(46)

文章存档

2012年(25)

2011年(21)

我的朋友

分类:

2011-12-29 09:22:28

  1. all: gliethttp

  2. gliethttp: src/a.o src/builtin.o src/bbbb dst/9999.o
  3.     @echo 0000000
  4. src/%.o: /home/luther/yayayayayayayapei force
  5.     @echo 1111111
  6. src/%.o: force
  7.     @echo 2222222
  8. src/%.o:
  9.     @echo 3333333
  10. dst/%.o:
  11.     @echo 4444444
  12. src/builtin.o:
  13.     @echo 5555555
  14. src/bbbb:
  15.     @echo 6666666

  16. force:

  17. .PHONY: force
执行make后你会看到如下输出:
2222222
5555555
6666666
4444444
0000000
我们来分析为什么会这样,
1. 首先你不能%.o前面必须有/路径分割, 否则make将认为是.o文件而直接是用默认规则cc -o来给你编译
2. 如果依赖文件src/builtin.o存在更加明确的目标和规则, 那么将选用这个规则创建目标, 否则
3. 只能使用含糊一些的静态模式%.o,
    3.1 如果静态模式%.o的依赖文件/home/luther/yayayayayayayapei不存在,
          同时又没有创建该依赖文件的方法那么该静态模式就不会被选用, 而会继续向下搜索另一个%.o,规则
    3.2 否则将是用%.o的规则
总之, 会是用%.o中匹配度最高, 同时最靠前的那个规则来生成目标

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