可以扩展GNU Make以支持非文件目标

时间:2016-09-02 03:49:23

标签: c makefile scheme

我使用GNU make来管理数据处理工作流程,表达10000多个文件和100 + TB的依赖关系。现在我正在使用一个功能来表达Makefile中的非文件目标,例如hdf5中的数据集,sqlite中的表,hdfs中的(非常规)文件等。例如:

# process dataset /src15 in pass1.h5 and save it as /evt15 in pass2.h5.
pass2.h5(/evt15): pass1.h5(/src15)
    ./process.py $^ -o $@

关闭功能是Archive Members as Targets,但它相当有限,

  

此构造仅在目标和先决条件中可用,而不是在   食谱!

我转向使用Cscheme的GNU制作扩展程序。但是,本手册中的所有示例都用于自定义功能。一个article表示

  

将来有可能制作更广泛的插件,   这将使用SHA1哈希而不是时间戳等。暂时   虽然为Makefile添加简单的功能既强大又强大   有趣。

因此,至少对于GNU make 4.0,扩展机制仅限于函数。

问题

  1. 是否可以使用GNU make的当前扩展机制定义非文件目标及其配方?
  2. 如果没有,任何黑客攻击GNU的提示都可以实现它吗?
  3. 如果它过于复杂,任何直接替换GNU都会破解?例如,使用makepp
  4. 更容易实现

    注意:drake支持非文件目标,但lacks pattern rules。明确地写出10000多个食谱是很乏味的,即使是循环。

0 个答案:

没有答案