自动创建自定义语言/脚本的自动依赖关系



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

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

第一个简单地接受输入文件并产生输出。第二个选项提供了文件的依赖项列表。

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

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

(PS:如果需要一个GNU make扩展是完全可以的。我已经在Makefile中使用了模式规则。

您需要做的唯一一件事就是将构建文件添加到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.deps缺失时运行production -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 %规则使这些规则具有通用性

最新更新