有什么办法我只能执行文件的虚假依赖 如果这个文件不存在?
如果文件没有虚假依赖,则它可以工作,只执行内容 这个规则。但是如果我将伪目标添加为依赖,它会继续执行依赖规则和生成现有文件的规则。
我简化了我的Makefile,以便您可以看到我的问题:
.PHONY: phonytarget all clean
all: $(CURDIR)/a.a
@echo done
$(CURDIR)/a.a: phonytarget
@touch $@
phonytarget:
@echo what the heck is wrong with you
答案 0 :(得分:8)
但是,有时您可能希望对要调用的规则强制执行特定排序,而不强制在执行其中一个规则时更新目标。在这种情况下,您希望定义仅订单的先决条件。可以通过在先决条件列表中放置管道符号(
|
)来指定仅订单的先决条件:管道符号左侧的任何先决条件都是正常的;右边的任何先决条件都是仅限订单:targets : normal-prerequisites | order-only-prerequisites
正常的先决条件部分当然可能是空的。此外,您仍然可以为同一目标声明多行先决条件:它们被适当地附加(正常先决条件被附加到正常先决条件列表;仅订单先决条件被附加到仅订单先决条件列表中)。
.PHONY: phonytarget all clean
all: $(CURDIR)/a.a
@echo done
$(CURDIR)/a.a: | phonytarget
@touch $@
phonytarget:
@echo what the hack is wrong with you