gpt4 book ai didi

scons - 在 scons 中,如何注入(inject)要构建的目标?

转载 作者:行者123 更新时间:2023-12-04 16:41:54 25 4
gpt4 key购买 nike

我想注入(inject)一个“清理”目标,该目标取决于在它关闭之前完成的许多其他目标以及 gzip 的一些日志文件。重要的是我不要过早使用 gzip,因为这会导致某些工具失败。

如何为 Scons 注入(inject)清理目标以执行?

例如我有目标 foo 和 bar。我想注入(inject)一个名为“cleanup”的新自定义目标,它依赖于 foo 和 bar 并在它们都完成后运行,而无需用户指定

% scons foo cleanup

我希望他们输入:
% scons foo

但是让 scons 像用户输入的一样执行
% scons foo cleanup

我已经尝试创建清理目标并附加到 sys.argv,但似乎 scons 在到达我的代码时已经处理了 sys.argv,因此它不会处理我手动附加到的“清理”目标系统.argv。

最佳答案

你不应该使用 _Add_Targets或未记录的功能,您只需将清理目标添加到 BUILD_TARGETS :

from SCons.Script import BUILD_TARGETS
BUILD_TARGETS.append('cleanup')

如果您使用此记录的目标列表而不是未记录的函数,则 scons 在进行簿记时不会感到困惑。此评论 block 可在 SCons/Script/__init__.py 中找到:
# BUILD_TARGETS can be modified in the SConscript files.  If so, we
# want to treat the modified BUILD_TARGETS list as if they specified
# targets on the command line. To do that, though, we need to know if
# BUILD_TARGETS was modified through "official" APIs or by hand. We do
# this by updating two lists in parallel, the documented BUILD_TARGETS
# list, above, and this internal _build_plus_default targets list which
# should only have "official" API changes. Then Script/Main.py can
# compare these two afterwards to figure out if the user added their
# own targets to BUILD_TARGETS.

所以我想它打算改变 BUILD_TARGETS而不是调用内部辅助函数

关于scons - 在 scons 中,如何注入(inject)要构建的目标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/707530/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com