【问题标题】:automake automatic dependencies custom language/scriptsautomake 自动依赖 自定义语言/脚本
【发布时间】:2011-11-07 16:12:15
【问题描述】:

我在 Automake 中需要处理一些文件,但不知道如何正确处理(使用 gnu make 扩展的 automake 规则)。例如,我有一个名为 refName.in 的文件,并希望生成输出 refName.out。我有两个相关的命令行:

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

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

我应该在 Automake 中做什么才能使此设置正常工作?我希望有完整的依赖跟踪,这样如果列表中由 produce-deps 生成的任何文件都会触发 produce-out 被调用。

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

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

【问题讨论】:

    标签: automake


    【解决方案1】:

    为此,您唯一需要的特定于 automake 的事情是将构建的文件添加到 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 更改时导致生产-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

    【讨论】:

    • 我不清楚如何为自动生成的依赖项执行 gnu makefile 位。
    • @edA-qamort-ora-y - 我做了一个编辑,显示了通过调用 produce-deps 添加额外依赖项的粗略方法。每次运行时都会调用它,但它简单安全且干净。
    猜你喜欢
    • 2017-11-05
    • 2019-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-26
    • 2014-05-21
    • 2018-08-01
    • 1970-01-01
    相关资源
    最近更新 更多