在SConstruct中,你如何得到什么'scons --tree = all'会打印出来?

时间:2011-11-23 18:39:10

标签: build build-process scons

This stackoverflow question显示了如何获取一个或多个目标的所有依赖项列表。你如何从SConstruct文件中获得相同的东西?

编辑: 也就是说,作为对象或其他东西。您总是可以递归调用scons -tree = all并从该进程中获取stdout,但我不想要黑客攻击。我想访问依赖对象scons正在使用。

1 个答案:

答案 0 :(得分:1)

获取此信息的最佳方法是查看SCons的源代码。您正在寻找文件SCons/Script/Main.py,尤其是TreePrinter类。基本思想是所有SCons节点都包含用于重建依赖图的所有相关细节。

我能想到的最简单的测试用例是:

import os
env = Environment(ENV = os.environ)
app = env.Program('dummy', 'main.cpp')

for item in app:
    for child in item.all_children():
        print child

执行此操作的代码并不是那么复杂,但我当然不希望依赖它而不是更改(它不是SCons的公共接口的一部分)。