Makefile 规则 "foo : bar : baz"
Makefile rule "foo : bar : baz"
指定如下规则是什么意思?
foo: bar : baz
我知道 foo
是目标,bar
和 baz
是先决条件,但为什么 bar
和 baz
之间还有另一个冒号 - 什么那个冒号的意思?
一般语法是
targets: pattern: prerequisites
所以这个 - 过于简单化 - 你的例子说,基本上,当我们构建 foo
时,bar
取决于 baz
。但是,第二个参数需要是一个模式规则,所以你的例子实际上是一个语法错误。
一个更有用和正确的例子是
$(OBJS): %.o: ick.h
这表示如果您正在构建 OBJS
之一,他们的 .o
文件取决于 ick.h
。
你想的特征是static pattern rule,你给的语法:foo : bar : baz
是非法的; bar
部分 必须 是 模式 (即,它必须包含 %
字符)。
Tripleee 给出了合理的解释,除了when we build foo
, bar
depends on baz
的说法有些令人费解。静态模式规则的意思是,对于 targets 中的每个单词,创建一个新的显式规则,其中目标是应用模式 pattern 的结果用先决条件 prerequisites.
指定如下规则是什么意思?
foo: bar : baz
我知道 foo
是目标,bar
和 baz
是先决条件,但为什么 bar
和 baz
之间还有另一个冒号 - 什么那个冒号的意思?
一般语法是
targets: pattern: prerequisites
所以这个 - 过于简单化 - 你的例子说,基本上,当我们构建 foo
时,bar
取决于 baz
。但是,第二个参数需要是一个模式规则,所以你的例子实际上是一个语法错误。
一个更有用和正确的例子是
$(OBJS): %.o: ick.h
这表示如果您正在构建 OBJS
之一,他们的 .o
文件取决于 ick.h
。
你想的特征是static pattern rule,你给的语法:foo : bar : baz
是非法的; bar
部分 必须 是 模式 (即,它必须包含 %
字符)。
Tripleee 给出了合理的解释,除了when we build foo
, bar
depends on baz
的说法有些令人费解。静态模式规则的意思是,对于 targets 中的每个单词,创建一个新的显式规则,其中目标是应用模式 pattern 的结果用先决条件 prerequisites.