4

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

%.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不是仅订单的先决条件,并且作为不在同一 make 过程中的另一个 make 目标的先决条件处理的一部分被解包,unpack_chroot则在 %.copy 运行时将被认为是最新的,并且不会重新制作 %。复制; 至少这是我所看到的。目前,unpack_chroot不是假的,而是被创造出来的。我想让它变得虚假,但想澄清这种行为。

4

1 回答 1

-3

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

从我运行的一些测试看来,这是唯一的区别。在所有其他方面,它们被视为与正常的先决条件相同。

于 2015-05-28T14:06:48.877 回答