gpt4 book ai didi

SCons -- target 那个 "deletes"文件?

转载 作者:行者123 更新时间:2023-12-02 03:22:21 25 4
gpt4 key购买 nike

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

例如:

b_file = env.Command("文件", ["文件1", "文件2", "文件3"], “构建文件 -o $TARGET $SOURCES”)

env.Depends(b_file,env.FileMustNotExist("file4"))

想法是,在构建"file"之前,SCons 将确保不仅“file1”、“file2”和“file3”存在,而且“file4”不存在。

我知道对于这个特殊情况,我可以通过在命令开头添加“rm -f file4;”来近似我想要的,但这并不完全相同。特别是,如果我将“rm”命令添加到构建器,然后在 SCons 外部创建“file4”,重新运行 SCons 将不会删除“file4”,除非其他来源之一已更改。

我想要这样的东西,即创建“file4”并重新运行 SCons 会导致简单地删除“file4”并指示现在已构建“files”。

最佳答案

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

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

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

关于SCons -- target 那个 "deletes"文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32409672/

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