在先决条件是虚假目标的情况下,仅限订单的先决条件的行为是什么?

时间:2013-10-14 13:53:04

标签: makefile

我想知道只有订单的先决条件是否会失去其仅订单优先权,如果它是虚假的目标。请考虑以下事项:

%.make: unpack_chroot
    schroot $(CHROOT) make $*

%.copy: | unpack_chroot
    rsync -a input/$*/ $(CHROOT)/input/$*/

unpack_chroot: input/chroot.tar.gz
    mkdir -p $(CHROOT)
    tar -C $(CHROOT) -zxf $<

.PHONY: unpack_chroot

所有%.make和%.copy目标均为.PHONY。其中一些目标依赖于复制到chroot中的文件,而其他目标则不然。那些做的事情是用明确的依赖关系定义的:

a.make: a.copy
c.make: c.copy

但是,如果unpack_chroot不是仅限订单的先决条件,并且在同一制作过程中作为另一个制作目标的先决条件处理的一部分而被解压缩,{{1} }%.copy运行时将被视为最新版本,并且不会重新制作%.copy;至少那是我所看到的。目前,unpack_chroot不是虚假的,而是被创建的。我想让它虚伪,但想澄清一下这种行为。

1 个答案:

答案 0 :(得分:-2)

根据这封电子邮件(http://kolpackov.net/pipermail/notes/2004-January/000001.html),似乎正常和仅订购先决条件之间的唯一区别是后者不会包含在自动make变量中,例如$ ^。

从某些测试开始,我认为这是唯一的区别。在所有其他方面,它们的处理方式与正常的先决条件相同。