在WAF脚本中处理已更改的文件

时间:2013-02-10 19:14:12

标签: python waf

是否可以在wscript文件中编写WAF函数,在构建每个更改的文件时将调用该函数?

我希望能够做到以下几点:

  1. 通过自定义Python函数处理所有输入.hpp文件,并将它们输出到构建文件夹。如果这样的文件被更改,我想处理它并在输出文件夹中更新它的定义。
  2. 通过外部脚本处理所有输入.hpp文件,并将resutl输出到build文件夹。
  3. 更新

    解释:我想为每个更改的文件运行一个fun1(file)函数,它将读取文件,修改它并返回修改后的版本,该版本应该输出到目标目录。

1 个答案:

答案 0 :(得分:1)

仅处理修改过的文件是WAF ^^

的主要特征之一

要执行你的python函数,你可以这样做:

top = '.'
out = 'build'


def configure(conf):
    pass

def build(bld):

    def fun1(input_file):

        # whatever

        return output_file_content_as_string

    def process(task):

        for src_node in task.inputs:

            src = src_node.abspath()
            tgt = src_node.get_bld()

            out = fun1(src)

            tgt.write(out)

        return 0 # everything ok

    bld(
        rule   = process,
        source = ['myfile.hpp', 'myfile2.hpp', ],
    )

这将在myfile.hpp等上调用fun1,并仅在修改后的文件中输出build dir。

默认情况下,waf管理每个源的签名以检测任何更改,并仅在签名更改时处理它...