- all: gliethttp
-
-
gliethttp: src/a.o src/builtin.o src/bbbb dst/9999.o
-
@echo 0000000
-
src/%.o: /home/luther/yayayayayayayapei force
-
@echo 1111111
-
src/%.o: force
-
@echo 2222222
-
src/%.o:
-
@echo 3333333
-
dst/%.o:
-
@echo 4444444
-
src/builtin.o:
-
@echo 5555555
-
src/bbbb:
-
@echo 6666666
-
-
force:
-
-
.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中匹配度最高, 同时最靠前的那个规则来生成目标
阅读(5164) | 评论(2) | 转发(3) |