GNU make 手册介绍了仅订购先决条件:
target: prerequisite1 prerequisite2 | orderonlyprerequisite1 orderonlyprerequisite2
Run Code Online (Sandbox Code Playgroud)
然而,虽然该手册页给出了一个示例并描述了仅订购先决条件的目的,但该手册页从未回答标题中的问题:什么是仅订购先决条件?
你能给出一个精确的定义,只有订单的先决条件是如何表现的吗?
Joh*_*kel 49
假设你有一个像这样的 Makefile
baby: love
touch $@
love:
touch $@
Run Code Online (Sandbox Code Playgroud)
然后make说,
touch love
touch baby
Run Code Online (Sandbox Code Playgroud)
现在你rm love又说make
touch love
touch baby
Run Code Online (Sandbox Code Playgroud)
因为为了生孩子,你必须做爱,而每次做爱时,你都必须生孩子。然而,假设您不想每次做爱时都生孩子。在这种情况下,您可以使用管道。
baby: | love
touch $@
Run Code Online (Sandbox Code Playgroud)
现在你只rm love说make
touch love
Run Code Online (Sandbox Code Playgroud)
因为虽然为了生孩子你必须做爱,但并不是每次做爱都必须生孩子。
Mat*_*att 24
首先,让我们回忆一下普通的先决条件是什么。
基本上,Makefile 中的先决条件有两个功能:
现在,仅订单先决条件执行 1.,即强加构建订单,但不执行 2。