SCons中的回退生成器

2024-10-01 04:44:03 发布

您现在位置:Python中文网/ 问答频道 /正文

是否可以在SCons中实现类似于回退构建方法的功能?你知道吗

例如,我的SConscript中有以下代码:

if check_something():
    MyBuilder(a, b)
....
if dont_know_how_to_build(a):
    FallBackBuilder(a, c)

我无法预测“正常构建方法”是否会被激活。 但我希望它没有被激活而烤饼没有 知道如何构建a,它使用了FallBackBuilder。你知道吗

我当然明白写作是可行的 比如:

if check_something():
    MyBuilder(a, b)
else:
    FallBackBuilder(a, c)

但我不满意这个解决方案, 因为在我的SConscript/SConstruct文件中可能有上千个位置 其中可以指定a的某些生成器。你知道吗

我只想指定一些“回退”方法 在和的斯堪的纳克。你知道吗

你觉得呢?有可能吗?或者这是一个错误的方向?你知道吗

换言之,如果可能的话,在SConscript中的某个地方可以得到一个已经有关联构建器的对象列表?你知道吗

例如:

Builder1(a,b)
Builder2(b,c)
list_of_buildable_objects = get_list_of_buildable_objects()
Builder3(c,d)

我想知道如何获得可构建对象的列表,在本例中,该列表必须等于[a, b]或类似的值。你知道吗


Tags: of对象方法功能列表ifobjectscheck
1条回答
网友
1楼 · 发布于 2024-10-01 04:44:03

现在不可能像你说的那样。你知道吗

SConstruct/SConscripts用于告诉SCons要做什么。它不会马上做这些事情。它使用这些信息来构建一个依赖关系树,由一些源扫描程序添加到该树中,以构建(希望)系统中所有依赖关系的完整图片。你知道吗

然后遍历这个DAG(有向无环图),以确定要发出的命令的正确顺序。你知道吗

图形中的某些对象的生成器由scon直接分配,而不是通过SConstruct/SConscripts。你知道吗

是否希望此回退生成器在其他生成器运行并失败后运行?或者这只是针对系统没有其他指定构建器的目标?你知道吗

相关问题 更多 >