gpt4 book ai didi

Scons AddPostAction 导致依赖项检查错误解决方法

转载 作者:行者123 更新时间:2023-12-04 19:16:53 25 4
gpt4 key购买 nike

在 scons 中,我试图根据这里的一个很好的例子制作一个 UnitTest 系统(见下面的代码):http://spacepants.org/blog/scons-unit-test

然而,由于最近 scons 2.0.1 和更新版本中的问题,这会导致依赖循环,如此处所述:http://old.nabble.com/AddPostAction-executes-on-first-build-but-not-subsequent-td18360675.html (和其他地方)。

有没有人知道解决这个问题的好方法或替代解决方案?

代码:

def UnitTest(env, target, source, **kwargs):
curTest = env.Program(target, source, **kwargs)
env.AddPostAction(curTest, curTest[0].abspath)
env.Alias('unit_tests', curTest)
env.AlwaysBuild(curTest)
return curTest

SConsEnvironment.UnitTest = UnitTest

mandolineTest = env.UnitTest(target='./codeTest',
source = mix(['test.cc', 'base.cc'),
LIBS = default_libs + ['bgl',],
LIBPATH = default_libs_path,
CPPPATH = default_includes )

最佳答案

我找到了解决此问题的方法。通过使用:

env.AddPostAction(curTest, curTest[0].abspath)

看起来 SCons 试图变得聪明并为 curTest[0].abspath 添加构建依赖项本身,导致这种循环依赖问题。解决方案是从 SCons 中“隐藏”命令的执行,因此它无法弄清楚您在做什么:
env.AddPostAction(curTest, lambda *_, **__: os.system(curTest[0].abspath))

对于我的单元测试系统(与您的略有不同,但有相同的问题),这具有在其任何依赖项发生变化时运行单元测试的预期效果,并且如果没有任何相关更改则不运行它。

关于Scons AddPostAction 导致依赖项检查错误解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8219743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com