【发布时间】:2025-11-28 14:25:02
【问题描述】:
我正在努力寻找正确的方法来定义测试脚本的依赖关系
在 waf 在同一构建过程中构建的二进制程序上。
这是wscript 的最小示例:
from waflib.Tools import waf_unit_test
def options(opt):
opt.load("compiler_cxx python waf_unit_test")
def configure(cnf):
cnf.load("compiler_cxx python waf_unit_test")
def build(bld):
bld.add_post_fun(waf_unit_test.summary)
bld.options.clear_failed_tests= True
bld(features= "cxx cxxprogram",
target= "foo",
source= "foo.cpp")
tg= bld(features= "test_scripts",
test_scripts_source= "fooTest.py",
test_scripts_template= "${PYTHON} ${SRC}")
tg.post()
tg.tasks[0].inputs.append(bld.path.find_or_declare("foo"))
我想表达的是,waf 将构建程序foo。
然后,如果程序 foo 自上次构建运行以来发生了变化,则脚本 fooTest.py 将检查该程序的执行情况。上面的wscript 有效:
Waf: Entering directory `/home/x/tmp/exe_depend/build'
[1/3] Compiling foo.cpp
[2/3] Linking build/foo
[3/3] Processing utest: fooTest.py build/foo
Waf: Leaving directory `/home/x/tmp/exe_depend/build'
execution summary
tests that pass 1/1
/home/x/tmp/exe_depend/fooTest.py
tests that fail 0/1
'build' finished successfully (0.054s)
原则上,上面的wscript 满足了我的需求,但它看起来很难看,而且摆弄任务生成器tg 似乎是错误的。有没有人知道一个顺利的解决方案?
【问题讨论】:
标签: build dependencies waf