Makefile依赖关系中breakoutline的逻辑

时间:2016-10-26 04:21:46

标签: c++ c makefile

我正在读C库。我遇到了一个奇怪的makefile类型,在多行上有多依赖,例如:

phuonga: 
    echo ">>>>>>>>>>>phuong a"
.PHONY : phuonga

phuongb: 
    echo ">>>>>>>>>>>phuong b"
.PHONY : phuongb
phuongc: 
    echo ">>>>>>>>>>>phuong c"
.PHONY : phuongc

phuong: phuonga
phuong: phuongb
phuong: phuongc
    echo ">>>>>> Runned phuong"

但是当我用make phuong运行时,结果是:

>>>>>>>>>>>phuong c
>>>>>>>>>>>phuong a
>>>>>>>>>>>phuong b
>>>>>> Runned phuong

它不会出现a,b,c或c,b,a。订单是c,a,b 为什么遵循此顺序?我不明白这个逻辑。

非常感谢

1 个答案:

答案 0 :(得分:2)

第一个先决条件是始终包含配方的规则的先决条件列表中的那些先决条件。之后,先前条件按照在makefile中看到的顺序添加。所以:

phuong: phuonga
phuong: phuongb
phuong: phuongc
        echo ">>>>>> Runned phuong"

包含配方的行列出phuongc作为先决条件,以便始终排在第一位。之后,看到的第一个先决条件是phuonga,接下来是phuongb

如果你写下这样的规则:

phuong: phuonga
phuong: phuongb
phuong: phuongc
phuong:
        echo ">>>>>> Runned phuong"

在包含配方的规则中没有列出任何先决条件的情况下,它们将按照在makefile中定义的顺序出现(phuongaphuongbphuongc )。

相关问题