3

変更されたすべてのファイルでビルド中に呼び出される wscript ファイルに WAF 関数を記述することは可能ですか?

次のことができるようになりたいです。

  1. すべての入力.hppファイルをカスタム Python 関数で処理し、ビルド フォルダーに出力します。そのようなファイルが変更された場合は、それを処理し、出力フォルダーでその定義を更新したいと考えています。
  2. すべての入力.hppファイルを外部スクリプトで処理し、結果をビルド フォルダーに出力します。

アップデート:

説明するには:変更されたファイルごとにfun1(file)関数を実行して、ファイルを読み取り、変更し、変更されたバージョンを返し、宛先ディレクトリに出力する必要があります。

4

1 に答える 1

1

変更されたファイルのみを処理することは、WAF の大きな特徴の 1 つです ^^

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 が呼び出され、変更されたファイルのみがビルド ディレクトリに出力されます。

デフォルトでは、すべてのソースの署名を管理して変更を検出し、署名が変更された場合にのみ処理します...

于 2013-03-18T17:39:28.980 に答える