Skip to main content
 首页 » 编程设计

python之Waf,添加手动依赖项时遇到问题

2025年05月04日6cmt

我在 waf 中有一个目标,它依赖于多个其他文件。有一个程序列出 那些依赖项,我想使用它,并传递给 waf。即,如果我有一个目标 T,那么 是一个列出T 的所有依赖项的程序。但我不清楚如何通过这个 到 bld.add_manual_dependency()。

作为依赖项的单个文件似乎工作正常:

bld.add_manual_dependency(bld.path.find_or_declare('T'), bld.path.find_resource('Dep1')) 

但是如果我将列表作为第二个参数传递,似乎可以接受,但不起作用!。 我想知道如何传递多个文件(不是 ant_glob(),而是程序选择的)。

请您参考如下方法:

这取决于您希望如何从依赖项中生成目标。在最简单的情况下,您只需使用带有源和目标的构建规则:

def build(bld): 
    bld( 
        rule = 'cat ${SRC[0].abspath()} > ${TGT}', 
        source = ['hello.txt', 'there.txt'], 
        target = 'out.txt' 
    ) 

如您所见,out.txt 将通过 cat:ing hello.txt 生成,hello.txt 和there.txt 将被视为目标依赖项。在这里,我在 wscript 中对依赖项进行了硬编码,但您当然会调用生成依赖项列表的程序来使用它。