Dependencies 如何使SCON选择性地忽略与自定义生成器的依赖关系?
以下是我的项目的依赖关系结构: 有一个文件F,从中派生文件a、B和C。项目中的其他一切最终取决于A、B或C A、 B、B和C是使用如下自定义生成器生成的:Dependencies 如何使SCON选择性地忽略与自定义生成器的依赖关系?,dependencies,scons,Dependencies,Scons,以下是我的项目的依赖关系结构: 有一个文件F,从中派生文件a、B和C。项目中的其他一切最终取决于A、B或C A、 B、B和C是使用如下自定义生成器生成的: ABCbuilder = Builder(action = build_abc) env = Environment(BUILDERS = {'abc' : ABCbuilder,...} env.abc([A,B,C],[F]) #scons includeF=1 问题是F很难处理,我希望在发行版中不包括它,只包括A、B和C 如果SCO
ABCbuilder = Builder(action = build_abc)
env = Environment(BUILDERS = {'abc' : ABCbuilder,...}
env.abc([A,B,C],[F])
#scons includeF=1
问题是F很难处理,我希望在发行版中不包括它,只包括A、B和C
如果SCON在没有F的情况下出现,我如何使其接受A、B和C作为起始源?当前,如果我将A、B和C复制到一个不包含F的新目录中,它会尝试重建它们
我已经看了手册部分,但我不知道如何将其应用到我的代码中。嗯,我想到了一个解决方法。 我制作了一个命令行变量,用于确定构建是否以F为根。 似乎有一种“斯科恩斯”的方法我不知道,但我认为这很好
do_abc = False
for key, value in ARGLIST:
if key == "do_abc":
do_abc = bool(value)
if do_abc:
ABCbuilder = Builder(action = build_abc)
env = Environment(BUILDERS = {'abc' : ABCbuilder,...}
env.abc([A,B,C],[F])
else:
env = Environment(BUILDERS = {...})
您可以在中找到有关Ignore()函数的详细信息。以下是手册页上的签名:
Ignore(target, dependency)
env.Ignore(target, dependency)
您应该能够执行以下操作:
# assuming aTarget, bTarget, cTarget, and F are set accordingly
Ignore(aTarget, F)
Ignore(bTarget, F)
Ignore(cTarget, F)
useF = ARGUMENTS.get('includeF', 0)
if not int(useF):
Ignore(aTarget, F)
Ignore(bTarget, F)
Ignore(cTarget, F)
在SCON中处理命令行选项有几种不同的方法,概述如下:
最简单的方法是,允许您执行以下操作:
# assuming aTarget, bTarget, cTarget, and F are set accordingly
Ignore(aTarget, F)
Ignore(bTarget, F)
Ignore(cTarget, F)
useF = ARGUMENTS.get('includeF', 0)
if not int(useF):
Ignore(aTarget, F)
Ignore(bTarget, F)
Ignore(cTarget, F)
命令行看起来像这样:
ABCbuilder = Builder(action = build_abc)
env = Environment(BUILDERS = {'abc' : ABCbuilder,...}
env.abc([A,B,C],[F])
#scons includeF=1
谢谢我试试看。遗憾的是,手册页的搜索有点麻烦,不像其他结构精美的文档。@L.AmberWilcox-O'Hearn Ya,我同意在手册页中搜索。但其他文档缺少手册页中的信息。