Makefile中的第一个目标是隐式虚假目标吗?

时间:2015-04-26 22:10:28

标签: makefile

我正在研究从编译器课程项目中获得的Makefile。只有一部分粘贴在这里。

from xlwings import Workbook, Range
def print_text():
    wb = Workbook.caller()
    Range('A1').value = 'å'

如你所见,目标'插件'没有依赖关系,如果我理解正确的话,应该意味着它的配方永远不会运行(除非它被声明为伪目标,这不是这里的情况)

但是,当我输入'make printCode'时,(printCode是列表中的最后一个目标)插件目标会执行。这怎么可能?是否存在一些隐含规则,指出Makefile的第一个目标被视为虚假目标,例如“all”?

1 个答案:

答案 0 :(得分:1)

你有点落后了。

可以运行plugin规则之类的规则。你可以通过执行'make plugin'来运行它,或者'make'如果它是默认目标(在这种情况下它是第一个),,或者它是另一个必须是目标的先决条件建。

我不确定当你'make printCode'时会发生什么,因为你只向我们展示了makefile的一部分,并且没有适合的规则,但是根据这个规则判断:

%.printCode: %.bc plugin
    opt -load Debug/lib/P1.so -printCode $*.bc 

我猜测printCode规则取决于pluginfoo.printCode取决于plugin的内容。因此,Make看到plugin是先决条件,看到没有这样的文件,因此确定必须构建plugin。然后,它会查找构建plugin的规则,找到并运行它。