【发布时间】:2015-09-04 12:00:49
【问题描述】:
Python 函数可以是 Builder 中使用的 SCons 操作,如 SCons user manual 中所述。每当任何源发生更改时,SCons 都会调用此函数。源作为 SCons Files 对象的列表传递 在这个函数中,我想知道特定源是否已更改(以及哪些源文件迫使 SCons 重建构建器的目标)。
所以如果“file.target”是使用“file1.src”和“file2.src”使用调用python函数“custom_build”的自定义构建器构建的:
env.CUSTOM_BUILDER('file.target', ['file1.src', 'file2.src'])
def custom_build(env, source, target):
# Checks if file1.src has been modified
if source[0].has_been_modified: # Does something like this exist??
我在调试时检查了这个文件对象,但没有成功。是否有任何属性可以知道特定文件在 SCons 构建器中发生了更改?
【问题讨论】:
-
这不是建造者行动的任务。通过将
*.src文件定义为目标的源,SCons 会自动注册这些文件之间的依赖关系。当您的源文件之一发生更改时(取决于您使用的 Decider() 方法),您的操作“custom_build”将被调用。它的唯一任务是从给定的源重新创建目标,关于何时发生此步骤的决定是在另一个层面上。 -
我明白你的意思。但是假设要重新创建目标,我需要知道哪些文件已被修改。假设目标是一个简单文件,其中列出了已从所有可能的源中修改的文件,这些源可用于重新创建目标。 SCons 有这些信息,所以我的问题是如何获取它。
-
我找到并发布了一个适合我需要的解决方案。无论如何,感谢您在回复中的时间和关注。