代码之家  ›  专栏  ›  技术社区  ›  Grigory Rechistov

在Makefile中使用“-include”有什么实际原因吗?

  •  0
  • Grigory Rechistov  · 技术社区  · 6 年前

    我最近调试了一个模糊的问题,结果是由于一个错误放置的子Makefile 包含在主生成文件中 -include 指令。注意开头的减号。根据GNU Make manual :

    如果你想让make忽略一个不存在的makefile或者 无法重新制作,如果没有错误消息,请使用 -包括 指令 而不是像这样包括:

    -include filenames…
    

    这在任何方面都像include,只是没有错误(没有错误) 即使是警告)如果任何文件名(或任何

    为了与其他make实现兼容, sinclude 另一个名字 -包括

    这个指令最糟糕的问题是,当找不到子Makefile时,不会给出任何诊断。不用说,这会使调试复杂很多。

    事实上,没有必要在那里使用它,一个普通的 include 工作得很好,而且更加健壮。我理解原作者的使用意图 . 该子Makefile包含一些“秘密”内容,不打算与第三方工程师共享。但这个功能最终从未被使用过,它本可以以一种更透明的方式实现。

    我想知道当你 是有用的。在一个生成过程中动态生成一个或多个生成文件?

    0 回复  |  直到 6 年前
        1
  •  2
  •   Matt    6 年前

    当然,最有用的应用 -include

    记住,所有包含文件也会自动成为make的目标。所以呢 -include generated_file 并不意味着过早地失败,而是意味着 generated_file 将使用当前Makefile中的其他规则(重新)生成。例如,可以在自动依赖项生成中利用这一点。

    顺便说一句,“包含”的另一个技巧是 include $(empty_var) 也可以正常工作(即无操作)。