如果验证指定文件不存在,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"并指出"文件"现在已经建成了。
答案 0 :(得分:1)
据我所知,这在设计中是没有预见到的,因此是不可能的。请注意SCons是一个面向file
的{{1}}系统,因此它的主要任务是创建文件......而不是删除它们。
在较新版本中有Pseudo目标,用于不创建实际输出文件的构建操作......但如果我没记错的话,它无法删除文件。
因此,看起来“rm -f文件”策略仍然是最好的方法。您可能希望使用Python的build
和os.path.isfile
,以保持在不同平台上的兼容性。