2013-02-10 44 views
3

是否有可能在wscript文件中編寫WAF函數,這將在構建每個更改的文件時調用?在WAF腳本中處理已更改的文件

我希望能夠做到以下幾點:

  1. 處理所有輸入.hpp文件使用一個定製的Python功能和輸出他們建立文件夾。如果這樣的文件被更改,我想處理它並更新它在輸出文件夾中的定義。
  2. 通過外部腳本處理所有輸入.hpp文件並輸出結果到生成文件夾。

UPDATE:

要解釋一下:我想每一個改變的文件運行fun1(file)功能,這將讀取該文件,修改並返回修改後的版本,應該outputed到目標目錄。

回答

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', ], 
    ) 

這將調用FUN1上myfile.hpp等等,並只在修改後的文件中輸出build dir。

默認情況下WAF管理的簽名爲每個源檢測到任何變化,它只有在簽名變化過程...

+0

謝謝,但我想複製前處理文件 - 可以說運行Python功能在上面 - 有可能嗎? – 2013-03-19 10:13:27

+0

是的。實際上,如果你不使用is_copy = True參數,subst功能就完成了。它可以用來源代替某些東西來獲得目標。你想用你的文件做什麼?順便說一句,更新你的問題,使其更清晰/更詳細,這是SO的方式。 – neuro 2013-03-19 10:23:12

+0

我想用我自定義的Python函數處理它(查看問題中的更新)。該函數可以讀取文件,解析它,修改並輸出修改後的版本 - 我想爲每個修改後的文件都做這件事。 – 2013-03-19 10:27:04