SCons 运行 post 是否对从缓存文件中检索到的文件执行操作?
Does SCons run post actions on files retrieved from a cachefile?
我有一个 post Action
附加到 Command
:
my_command = env.Command(out_file, in_file, Action(cmd_str))
env.AddPostAction(my_command, Action(...))
除非通过 sccache 从缓存文件中提取 out_file,否则这已经足够好了。然后,似乎post动作不再是运行s.
post 操作不是针对从缓存文件中提取的目标 运行 是真的吗?如果是这样,我如何确保我的 post 操作始终 运行?
谢谢!
这里的问题是为什么您想要 运行 您的 post 操作 "always",即使只是从缓存中检索构建的文件。
我假设您的 post 操作是某种调试或打印输出,您总是希望在相关目标获得 "accessed" 时看到它。
这不是 Action 概念的目的。 Action() 定义了实际构建目标所需的单个步骤。一旦它被创建,并且可以从缓存中检索,就没有必要 运行 那些 Action() 第二次......事实上,它可能会适得其反:想象一下你的 post 操作将带有调试信息的特殊预告片添加到最终目标文件或可执行文件中。每次从缓存中检索目标时是否要添加此信息?我不这么认为。
总而言之,当从缓存中检索文件时,没有任何操作---既不是前-也不是 post- 也不是实际操作列表---是 运行 .这是设计使然,正如我在第一段中试图概述的那样。
我有一个 post Action
附加到 Command
:
my_command = env.Command(out_file, in_file, Action(cmd_str))
env.AddPostAction(my_command, Action(...))
除非通过 sccache 从缓存文件中提取 out_file,否则这已经足够好了。然后,似乎post动作不再是运行s.
post 操作不是针对从缓存文件中提取的目标 运行 是真的吗?如果是这样,我如何确保我的 post 操作始终 运行?
谢谢!
这里的问题是为什么您想要 运行 您的 post 操作 "always",即使只是从缓存中检索构建的文件。 我假设您的 post 操作是某种调试或打印输出,您总是希望在相关目标获得 "accessed" 时看到它。 这不是 Action 概念的目的。 Action() 定义了实际构建目标所需的单个步骤。一旦它被创建,并且可以从缓存中检索,就没有必要 运行 那些 Action() 第二次......事实上,它可能会适得其反:想象一下你的 post 操作将带有调试信息的特殊预告片添加到最终目标文件或可执行文件中。每次从缓存中检索目标时是否要添加此信息?我不这么认为。
总而言之,当从缓存中检索文件时,没有任何操作---既不是前-也不是 post- 也不是实际操作列表---是 运行 .这是设计使然,正如我在第一段中试图概述的那样。