1. 程式人生 > >Makefile:(實驗)多個目標匹配時會采用最完整匹配的目標

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

efi pre 發現 file 最完整 現象 .PHONY ech 測試的

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

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

測試的Makefile如下:

.PHONY: all clean quick_sort

all: quick_sort bubble_sort
#目標1
quick_sort:
    @echo "matching [email protected]"
    @echo 'in quick_sort'
#目標2
%:
    @echo "matching [email protected]"
    @echo 'in %'
#目標3
%_sort:
    @echo "matching [email protected]"
    @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。

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

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

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