【问题标题】:Running a pre-processing tool on source files in makefile before build在构建之前对 makefile 中的源文件运行预处理工具
【发布时间】:2014-07-15 19:40:12
【问题描述】:

我有一个工具可以说mytool 对源文件进行一些预处理。基本上,它会在源文件中检测一些函数(基于输入列表文件)。

它的调用方式是:(假设我们有两个源文件 - input1.c 和 input2.c)

./mytool input1.c input2.c --  

('--' 用于将一些参数保留为默认值)

现在,我希望将此工具与任何构建过程(即 makefile)挂钩,以便该工具可以从 makefile 获取所有源文件并可以在所有源文件上运行。所以它说有 3 个 C 文件 - 1.c、2.c 和 3.c 然后我们想做

./mytool 1.c 2.c 3.c --

然后继续通常的构建过程,即在最简单的情况下“制作”。

我怎样才能做到这一点?这是否可以通过某种变量覆盖来实现?

【问题讨论】:

  • 这个工具是否需要像这样同时在每个文件上运行?还是可以单独在每个文件上运行?
  • 你想执行那个操作,即使 Make 什么都不做(例如,如果没有文件过期)?
  • @EtanReisner,我希望它同时在每个文件上运行。但是,即使我能够单独运行它,对我来说也应该没问题。
  • @Beta 嗯,这对我来说更像是一个极端情况。即使 make 没有什么可做的,我也可以做 'make clean',然后在使用我的工具进行预处理步骤后继续进行通常的 make。

标签: shell build makefile gnu-make


【解决方案1】:

假设您不介意每个.c 文件运行一次工具(而不是为所有.c 文件运行一次),最简单的做法是替换默认的%: %.c 和%.o: %.c 内置-in 制定规则(假设这些规则正在使用中)并将您的工具添加到这些规则的主体中。

这仅针对需要从源代码重新构建的文件运行该工具(根据@Beta 对 OP 的评论)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-22
    • 1970-01-01
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多