0

是否可以在 SCons中实现类似后备构建方法的东西?

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

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

我无法预测是否会激活“正常构建方法”。但我希望当它没有被激活并且 SCons 不知道如何构建a时,它使用FallBackBuilder.

当然,我知道写这样的东西是可以的:

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

但我对这个解决方案不满意,因为在我的 SConscript/SConstruct 文件中可能有数千个地方a可以指定一些构建器。

我只想在 SConscript 的和处指定一些“后备”方法。

你怎么看?可能吗?或者这根本就是一个错误的方向?

换句话说,如果有可能在 SConscript 中的某个地方获得已经有关联构建器的对象列表?

例如:

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

我想知道如何获取在此示例中必须等于或类似的可构建对象的列表。[a, b]

4

1 回答 1

0

您指定的当前不可能。

SConstruct/SConscripts 用于告诉 SCons 做什么。它不会立即执行这些操作。它使用这些信息来构建依赖关系树,一些源扫描器会将其添加到系统中,以构建(希望)系统中所有依赖关系的完整图景。

然后遍历此 DAG(有向无环图)以找出要发出的命令的正确顺序。

图中的一些对象的构建器由 SCons 直接分配,而不是通过 SConstruct/SConscripts。

您是否希望在其他构建器运行并失败后运行此后备构建器?或者这仅适用于系统没有其他指定构建器的目标?

于 2013-03-30T06:34:18.300 回答