scons:如何定义仅在 'scons -c' 期间发生的 command/target?

scons: how to define command/target that only takes place during 'scons -c'?

在构建目标之前我想创建一些目录结构,我知道我可以使用:

env = Environment()
env.Execute('mkdir -p xxx')

但这会导致“mkdir -p”在我清理时执行:

scons -c

"env.Execute" 将被调用。

我希望有一些命令或目标只在我执行时发生 'scons -c'

如何实现? 谢谢

-c 选项是一个内置的 scons 选项,您可以检查它是否设置为 GetOption('clean')

然后您可以根据 'clean' 选项的值有条件地调用命令。这是一个例子:

env = Environment()
if not GetOption('clean'):
    env.Execute('mkdir -p xxx')
else:
    env.Execute('echo "Cleaning up..."')

有关其他内置选项的更多信息,请参见此处: https://scons.org/doc/production/HTML/scons-user.html#sect-command-line-option-strings https://scons.org/doc/production/HTML/scons-man.html#options