结论源自实验测试,若是有疏漏但愿指出shell
当Makefile中存在多个匹配的目标时,Makefile会采用哪一个匹配的目标呢?测试
测试的Makefile以下:ui
.PHONY: all clean quick_sort all: quick_sort bubble_sort #目标1 quick_sort: @echo "matching $@" @echo 'in quick_sort' #目标2 %: @echo "matching $@" @echo 'in %' #目标3 %_sort: @echo "matching $@" @echo 'in %_sort' clean: $(RM) *.o bubble_sort quick_sort
测试结果以下:code
$make matching quick_sort in quick_sort matching bubble_sort in %_sort
在实验中,all
目标有两个依赖的子目标quick_sort
和bubble_sort
。
在匹配quick_sort
子目标时,目标1-3都符合,按实验结果,最终执行的是目标1。
在匹配bubble_sort
子目标时,目标2-3都符合,按实验结果,最终执行的是目标3。class
为了不从上往下顺序匹配的可能,在匹配quick_sort
时,特意把最完整匹配放在目标1。file
按上述实验的现象,咱们能够发现:makefile
完整匹配 > 通配符半匹配 > 彻底通配符匹配sort