我在理解什么似乎是基本的make
行为时遇到了麻烦,有多个前提条件和一些共同的词干都可以通过一条规则进行匹配。
我尝试阅读Pattern intro chapter,但似乎误解了一些基本知识。
all: prefix-variant1.so prefix-variant2.so
prefix-%.so : %.o
@echo "variant with prerequisite succeeded"
运行make
时,出现以下错误:
make: *** No rule to make target 'prefix-variant1.so', needed by 'all'. Stop.
我在做什么错了?
答案 0 :(得分:2)
我在做什么错了?
请记住,make允许有许多并发的模式/后缀规则。例如,目标文件export default class AddWater extends React.Component {
handleAddQuantity = (e) => {
e.preventDefault();
const quantity = e.target.elements.quantity.value;
props.handleAddQuantity(quantity)
};
render() {
return (
<form onSubmit={this.handleAddQuantity}>
<input type="text" name="quantity" />
<input type="submit" value="Submit" />
</form>
)
}
可以由%.o
的C编译器创建,也可以由%.c
的C ++编译器创建,甚至可以由%.cpp
的Fortran创建,依此类推,等等。
因此,仅当存在相应的必备文件(或可以构建,请参见Chained Rules)时才考虑模式规则。您的情况是%.f
。如果当前目录中不存在此类文件,并且没有其他适合于从源代码构建文件的规则,则make会忽略该规则,并说“没有规则可作为目标”。