关于C#:我可以使用SCons别名来选择要运行的SConscripts吗?

Can I use SCons aliasing for choosing SConscripts to run?

我正在使用SCons来构建一个非常大的项目,其中包含许多可构建的子项目。我可以轻松地使用诸如scons group=ai之类的关键字命令来通过if语句构建AI子项目(基于keyword命令选择正确的SConscripts),但是我想让其他人尽可能容易地使用scons。理想情况下,我想这样使用它:scons ai来构建AI组件。但是,到目前为止,我在SCons中发现的唯一的单字命令功能是别名,所有示例都与更改目标有关。这不是我想要的。由于我有一个非常大的项目,其中包含多个子SConscript文件来构建子项目,因此我想选择性地调用SConscripts。我已经尝试过这样的代码:

1
env.Alias("ai", SConscript("ai/SConscript", 'env'))

但这每次都调用AI SConscript,无论我使用" ai "别名还是其他别名。有谁知道是否可以使用这种方式使用别名来基于别名有选择地调用SConscripts?


如前所述,Alias()函数仅用于目标。我可以想出两种方法来解决这个问题

可以为具有不同目标的同一别名多次调用

Alias(),因此您可以为每个SConscript中的所有目标调用它,然后可以在SConscript中构建所有内容。这是我的意思的示例:

ai / SConscript:

1
2
3
4
5
6
# targets, etc

env.Alias("ai", target1)
env.Alias("ai", target2)
...
env.Alias("ai", targetn)

另一个选择是在根SConstruct中放入一些逻辑,以便它仅基于命令行参数调用子项目SConscript \\。此选项将要求您使用以下形式的命令行参数:group=ai