Makefile 对 target/dependency 共享命令但与隐式规则冲突

Makefile pair of target/dependency that share command but conflicts with implicit rules

我有很多对 file-target/dependency 有不同的扩展,我不能做一个隐式规则,因为模式太笼统并且会与其他隐式规则冲突......有没有分享的方式规则正文的简短说明?

(例如,目标文件在一个有序变量中,而 dep 在另一个以相同方式排序的变量中)

例如:

foo.a : foo.b
    cmd1 $< $@

bar.a : bar.b
    cmd2 $< $@

foo1.a : foo.b
    cmd2 $< $@

bar1.a : foo.b
    cmd1 $< $@

foo2.a : something.b
    cmd2 $< $@

bar2.a : something2.b
    cmd1 $< $@

名字其实可以随便取的

你可以把它缩短一点:

foo.a bar1.a foo1.a : foo.b

bar2.a : something2.b

foo.a bar1.a bar2.a :
    cmd1 $< $@

bar.a : bar.b

foo2.a : something.b

bar.a foo1.a foo2.a :
    cmd2 $< $@

您也可以按照您的建议,在没有来自一对变量的命令的情况下构建所有这些规则,但我不建议这样做:结果将是一个神秘的 makefile,难以理解或维护。