結論源自實驗測試,若是有疏漏但願指出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