是否可以在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]
或类似的东西。
答案 0 :(得分:0)
指定它时不太可能。
SConstruct / SConscripts用于告诉SCons要做什么。它不会立即做这些事情。它使用这些信息来构建一个依赖树,由一些源扫描器添加,以构建系统中所有依赖关系的(希望)完整图片。
然后遍历此DAG(有向非循环图)以确定要发出的命令的正确顺序。
图表中的某些对象的构建器直接由SCons分配,而不是通过SConstruct / SConscripts分配。
您是否希望在其他构建器运行并运行失败后运行此回退构建器?或者这仅适用于系统没有其他指定构建器的目标?