automake自动依赖自定义语言/脚本

时间:2011-11-07 16:12:15

标签: automake

我在Automake中做了一些文件处理,无法弄清楚如何正确地执行它(使用gnu make扩展的automake规则)。例如,我有一个名为 refName.in 的文件,并希望生成输出 refName.out 。我有两个相关的命令行:

produce-out refName.in refName.out
produce-deps refName.in

第一个简单地获取输入文件并生成输出。第二个提供了文件的依赖项列表。

我应该在Automake中做些什么来使这个设置正常工作?我希望有完整的依赖关系跟踪,这样如果 produce-deps 生成的列表中的任何文件将触发 Produ-out 被调用。

(注意:更改这些命令的工作方式没有问题。如果需要,一个命令可以产生输出和依赖关系。也可以修改不同的命令行开关等。)

(PS:如果需要GNU make扩展是完全可以的。我已经在Makefile.am和其他扩展中使用了图案规则。)

1 个答案:

答案 0 :(得分:3)

您需要的唯一具体功能是将构建的文件添加到BUILT_SOURCES

BUILT_SOURCES := refName.out

# You might well want refName.in in EXTRA_DIST
EXTRA_DIST := refName.in

# then any standard Make rules will do:
refName.out: refName.in $(shell produce-deps refName.in)
        produce-out refName.in refName.out

如果你想要一种更复杂的依赖关系方式,你可以在GNU make的include中使用这些规则,这只会​​导致在refName.deps缺失或refName.in更改时运行produce-deps:

refName.deps: refName.in
        echo 'ref-deps := "' $(shell produce-deps refName.in) '"' > refName.deps

include refName.deps

refName.out: refName.in $(ref-deps)
        produce-out refName.in refName.out

您可以使用通常的GNU制定%规则make these rules generic