On Fri, Sep 4, 2015 at 10:10 AM, Dirk Bächle <tshor...@gmx.de> wrote:
> On 04.09.2015 06:16, anatoly techtonik wrote: > >> I have another question about SCons. If I specify target explicitly, it >> ends up >> as str in BUILD_TARGETS and it is impossible to traverse. How do I >> transform it to Node if I don't know the type? I.e. how to lookup Node >> object >> by name? >> >> > you mean you explicitly specify a target "x" on the command line, but you > don't know whether it's a File or a Dir? > Can you come up with a short user scenario for this? What is it that > you're trying to accomplish? > The short user scenario - a person want to build wesnoth and executes `scons`. The output says that possible targets are "wesnoth" and "wesnothd". Because I don't have dependencies for "wesnoth", I specify "wesnothd" which ends up as str in BUILD_TARGETS and I can not traverse it. > I think we had this discussion some time ago when you asked about how to > traverse the Node tree (DAG), the single Nodes are mainly addressed > (identified) by their full path (relative path and name) relative to the > top-level folder of the current SCons build. This is what's used while > looking up Nodes (exists already, or not?) in the internal FS tree > structure, such that we are able to distinguish between "vector.h" in two > different subdirectories for example. > > Hope this helps you a little further. I found a list SCons.Node.arg2nodes_lookups which contains at least SCons.Node.Alias.AliasNameSpace() instance that lookups the name in the list of all Alias nodes. So, the way SCons.Script.Main converts name to Node is: for lookup in SCons.Node.arg2nodes_lookups: node = lookup(x, curdir=curdir) if node is not None: break if node is None: node = fs.Entry(x, directory=ltop, create=1) -- anatoly t.
_______________________________________________ Scons-dev mailing list Scons-dev@scons.org https://pairlist2.pair.net/mailman/listinfo/scons-dev