我正在尝试一些半文字编程,并且需要构建一些没有.extension的文件。我想在我的Makefile中使用通用模式,但无法使其工作。
这是我的Makefile,缩减为MWE:
all: jcb jcbsetup
jcbsetup: jcb.org
%.: %.org
./weborg2asm.awk $< > $@
在这种情况下,make -B
说“无所事事”
如果我尝试将%.:
更改为% :
,则只构建jcb,而不是jcbsetup。
显然,我可以为每个显式目标编写配方,但出于显而易见的原因,我想使用模式。我可以(有点)理解为什么这不起作用,但做有什么用吗?
我在cygwin下使用Gnu Make 4.0。
答案 0 :(得分:1)
如图所示,这显示了如何从jcb.
构建jcb.org
,并且对jcb
一无所知。
如果(看起来正确)您将规则更改为%: %.org
,那么这似乎做了正确的事情,并且您的makefile正在按照您的要求进行操作。
请注意,您的目标jcbsetup: jcb.org
没有任何操作,因此它表示“当jcb.org
成立时,jcbsetup
也是最新的”,并且它不会做任何额外来制作jcbsetup
。
如果您有jcbsetup.org
,则%: %.org
会匹配,这表明如何从jcbsetup
创建jcbsetup.org
。但这只会在这种情况下发生。
请注意,模式规则(涉及%
)通常在之前第一个具体规则;它们之后可能不被识别(即使它们是,它们更常规/可读性最先出现)。