gpt4 book ai didi

scons - 为什么 Scons 关心我的目标是只读的,我如何说服它忽略它?

转载 作者:行者123 更新时间:2023-12-01 05:46:16 25 4
gpt4 key购买 nike

我正在尝试将一个特别困难的项目布局的调试版本放在一起。我需要做的一件事是将最近构建的 DLL 复制到受 Source Safe 控制的现有 DLL 上,因此是只读的。我希望使用 Scons 来管理这个,但是如果你的目标是只读的,Scons 就会出错。我的命令的一部分是将其设置为可读,但我的命令永远不会执行,因为 scons 错误首先出现。无论如何要覆盖这种行为?

这是一个演示。如您所见,如果设置了只读位,我的“关闭只读位”命令永远不会运行:

C:\scs\dev\test>type Sconstruct
env = Environment()

env.Command(
"b.txt", "a.txt",
[
r"if exist $TARGET c:\windows\system32\attrib -r $TARGET",
Copy("$TARGET", "$SOURCE")
]
)

C:\scs\dev\test>echo "test" > a.txt

C:\scs\dev\test>scons -Q b.txt
if exist b.txt c:\windows\system32\attrib -r b.txt
Copy("b.txt", "a.txt")

C:\scs\dev\test>echo "test2" > a.txt

C:\scs\dev\test>attrib +r b.txt

C:\scs\dev\test>scons -Q b.txt
scons: *** [b.txt] C:\scs\dev\test\b.txt: Access is denied

更新

好的 - 我已经通过在运行时逐步通过 Scons 来解决这个问题。看起来 Scons 在构建目标之前会删除它们(参见 FS.py 中的 _rmv_existing,以及 scons 文档页面中的 this 页面)。如果遇到这个问题,可以将目标标记为“Precious”,但如果使用“-c”仍然会遇到问题。

这里没有真正好的解决方案。那好吧。

最佳答案

使用 NoClean(target) 来禁止在运行时删除生成的文件 scons -c .

关于scons - 为什么 Scons 关心我的目标是只读的,我如何说服它忽略它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1904129/

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