3

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

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

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

更新:

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

4

1 回答 1

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,并仅在修改后的文件上在构建目录中输出。

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

于 2013-03-18T17:39:28.980 回答