Makefile:(實驗)多個目標匹配時會採用最完整匹配的目標

結論源自實驗測試,如果有疏漏希望指出

當Makefile中存在多個匹配的目標時,Makefile會採用哪個匹配的目標呢?

測試的Makefile如下:

.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

測試結果如下:

$make
matching quick_sort
in quick_sort
matching bubble_sort
in %_sort

在實驗中,all目標有兩個依賴的子目標quick_sortbubble_sort
在匹配quick_sort子目標時,目標1-3都符合,按實驗結果,最終執行的是目標1。
在匹配bubble_sort子目標時,目標2-3都符合,按實驗結果,最終執行的是目標3。

爲了避免從上往下順序匹配的可能,在匹配quick_sort時,特地把最完整匹配放在目標1。

按上述實驗的現象,我們可以發現:

完整匹配 > 通配符半匹配 > 完全通配符匹配

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章