【问题标题】:Makefile that can determine using gcc which headers are missing?可以使用 gcc 确定缺少哪些标头的 Makefile?
【发布时间】:2011-05-24 21:15:44
【问题描述】:

我有一个简单的库,可以为我生成头文件,我希望将其链接到 Makefile 中。

如果一个 cpp 文件包含一个不存在的头文件,它应该从匹配的源文件生成它(如果相应的文件存在)。我不知道该怎么做。

我曾尝试使用 gcc -MM 提前找出每个 .cpp 文件的依赖关系,但如果缺少标头,这将失败。我需要知道哪些文件丢失了才能尝试重新生成它们。

如果我只是为所有 .cpp 文件的标头定义一个先决条件,它当然会重新编译我的所有 .cpp 文件。

关于如何只重新生成丢失的标头有什么想法吗?

【问题讨论】:

    标签: makefile dependencies code-generation build-automation


    【解决方案1】:

    似乎可以使用 gcc 找到解决方案:

    http://gcc.gnu.org/onlinedocs/cpp/Invocation.html

    -MG

    与 -M 等选项一起请求依赖 代,-MG 假定缺少标头 files 是生成的文件并添加 他们到依赖列表没有 引发错误。

    【讨论】:

      【解决方案2】:

      您是否尝试过定义模式规则来生成每个标题,例如

      %.hh: %.cpp
          header_generator $^ > $@
      

      【讨论】:

      • 这不是问题。我正在尝试找出 .cpp 文件中包含的哪些标头尚未构建为仅为这些标头创建规则。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-06
      • 2018-01-21
      • 1970-01-01
      • 2013-08-01
      • 2016-07-15
      相关资源
      最近更新 更多