代码之家  ›  专栏  ›  技术社区  ›  Caleb

gnu make是否可以被强制更具体地说明实际上缺少哪些依赖项?

  •  1
  • Caleb  · 技术社区  · 6 年前

    我正在使用gnu make(v4+)来构建一些非常复杂的项目。任何给定目标的依赖树都可能有5-10个层次,其中大多数层次都涉及大量的模式匹配规则。在调试时,我开始感到恼火,因为似乎错误报告只在缺少某些信息时提供最不有用的信息。

    例如,考虑两个依赖级别:

    .PHONY: out
    out: thing_a thing_b
    
    thing_%: %
        cat $< > $@
    
    a:
        touch $@
    
    clean:
        rm -f thing_a thing_b a b
    

    请注意 make out 将失败,因为没有文件 b 也不可能自动成功。如果你 touch b 它会起作用的。这使得 最终的罪魁祸首不见了,但错误信息不会这么说:

    make:**no rule to make target'thing_b',needed by'out'。停下来。

    这没有帮助,因为有一个目标规则 thing_b ,它恰好是一个模式规则,它本身缺少依赖项。

    有没有什么方法可以让make输出一个更详细的报告,说明实际上缺少了什么,从而在较低的级别上实现了依赖关系?

    0 回复  |  直到 6 年前