SCons - 目标是"删除"一个档案?

时间:2015-09-05 05:03:11

标签: scons

如果验证指定文件不存在,SCons中是否有一种简单的方法来创建一个被认为是最新的目标? (当然,要有一个删除文件的构建器,如果它存在的话......)

例如:

b_file = env.Command(" files",[" file1"," file2"," file3"],                      " build-files -o $ TARGET $ SOURCES")

env.Depends(b_file,env.FileMustNotExist(" file4将&#34))

想法是在构建"文件"之前,SCons不仅会确保" file1"," file2"和" file3& #34;存在,但那" file4"不存在。

我知道,对于这个特殊情况,我可以通过添加" rm -f file4来估算我想要的内容; "到命令的开头,但这并不完全相同。特别是,如果我添加" rm"命令到构建器,然后创建" file4"在SCons之外,重新运行SCons不会删除" file4"除非其他一个来源发生了变化。

我想要创造" file4"并重新运行SCons将导致简单地删除" file4"并指出"文件"现在已经建成了。

1 个答案:

答案 0 :(得分:1)

据我所知,这在设计中是没有预见到的,因此是不可能的。请注意SCons是一个面向file的{​​{1}}系统,因此它的主要任务是创建文件......而不是删除它们。

在较新版本中有Pseudo目标,用于不创建实际输出文件的构建操作......但如果我没记错的话,它无法删除文件。

因此,看起来“rm -f文件”策略仍然是最好的方法。您可能希望使用Python的buildos.path.isfile,以保持在不同平台上的兼容性。