如下指定规则是什么意思?
foo: bar : baz
我了解foo
是一个目标,bar
和baz
是先决条件,但为什么bar
和baz
之间还有另一个冒号 - 什么&#39那个冒号的含义是什么?
答案 0 :(得分:4)
您正在考虑的功能是static pattern rule,您提供的语法:foo : bar : baz
是非法的; bar
部分必须是模式(也就是说,它必须包含%
个字符。)
Tripleee给出了一个合理的解释,除了声明我们构建foo
时,bar
依赖于baz
有些令人困惑。静态模式规则的含义是,对于目标中的每个单词,创建一个新的显式规则,其中目标是将模式模式应用于具有先决条件的该单词的结果先决条件
答案 1 :(得分:1)
一般语法是
targets: pattern: prerequisites
所以这个 - 过于简单 - 你的例子说,基本上,当我们构建foo
时,bar
取决于baz
。但是,第二个参数需要是模式规则,因此您的示例实际上是语法错误。
更有用和正确的例子是
$(OBJS): %.o: ick.h
表示如果您构建OBJS
之一,则其.o
文件取决于ick.h
。