You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SCons脚本的Python代码中判断是否执行清理操作?

区分SCons常规构建与清理操作的方法

SCons提供了两种可靠的方式来判断当前是否处于清理(执行scons -c)模式,从而控制do_prepare_output_directory()函数的执行:

方法一:使用GetOption()直接检查清理状态

这是最直接的方式,通过全局的GetOption('clean')或环境对象的env.GetOption('clean')获取布尔值结果,判断是否执行清理操作:

def do_prepare_output_directory():
    # 仅在非清理模式下执行目录准备逻辑
    if not GetOption('clean'):
        # 此处编写你的文件系统检查、目录创建、文件复制代码
        pass

# 在构建流程的合适位置调用函数
do_prepare_output_directory()

当执行scons -c TARG时,GetOption('clean')会返回True,函数内的准备逻辑会被跳过。

方法二:检查COMMAND_LINE_TARGETS中的特殊清理目标

SCons执行清理命令时,会自动将__CLEANUP__这个特殊目标加入COMMAND_LINE_TARGETS列表,你可以通过检查该目标是否存在来判断:

from SCons.Script import COMMAND_LINE_TARGETS

def do_prepare_output_directory():
    if '__CLEANUP__' not in COMMAND_LINE_TARGETS:
        # 执行目录准备逻辑
        pass

do_prepare_output_directory()

这种方式同样有效,但需注意:若用户手动指定__CLEANUP__作为构建目标(这种场景极少出现),会导致误判,因此第一种方法更推荐。

额外提示

如果可能,建议尽量将目录创建、文件复制操作整合到SCons的依赖树中,比如用env.Mkdir()创建目录(会自动成为目标的依赖),或用env.Install()/env.Copy()关联到TARG目标,这更符合SCons的依赖管理设计。但如果确实无法整合,上述两种判断方式可以满足你的需求。

内容的提问来源于stack exchange,提问作者shuriken_alley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 23:54:41