是否可以在 wscript 文件中编写 WAF 函数,该函数将在构建每个更改的文件时调用?
我希望能够做到以下几点:
- 通过自定义 Python 函数处理所有输入
.hpp
文件并将它们输出到构建文件夹。如果此类文件已更改,我想处理它并更新其在输出文件夹中的定义。 .hpp
通过外部脚本处理所有输入文件并将结果输出到构建文件夹。
更新:
解释一下:我希望为每个更改的文件运行一个fun1(file)
函数,该函数将读取文件,对其进行修改并返回修改后的版本,该版本应输出到目标目录。
只处理修改过的文件是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 为每个源管理一个签名以检测任何更改,并仅在签名更改时处理它......