make:强制使用规则

时间:2011-11-23 15:28:56

标签: makefile

使用以下make来设置Makefile(Gnu Make)(假设缺少文件foo.xfoo.y

all: foo.z

foo.z: foo.x foo.y
  cat foo.x foo.y > foo.z

产生错误消息:

make: *** No rule to make target `foo.x', needed by `foo.z'.  Stop.

但是Makefile

all: foo.z

%.z: %.x %.y
  cat %.x %.y > %.z

产生以下错误消息:

make: *** No rule to make target `foo.z', needed by `all'.  Stop.

在第一种情况下,应用规则,如果发现缺少依赖性。 在第二种情况下,发现规则不合适,这是一个缺失的规则。

我想使用第二个Makefile(我有很多*.z个对象要创建),但是会出现与第一个Makefile类似的错误消息。记录了我的make输出,并且具有丢失文件的扩展名称将有助于调试。

有可能吗?也许是一种强制使用规则的方法?

当然我没有抓文件,这只是一个例子......

1 个答案:

答案 0 :(得分:1)

我刚刚找到:

all: foo.z

OBJ=foo.z

$(OBJ): %.z: %.x %.y
   cat %.x %.y > %.z

需要Static Pattern rule。惊人的制作...