Python函數可以是Builder中使用的SCons操作,如SCons user manual中所述。只要有任何來源發生變化,此功能將由SCons調用。源以SCons文件對象列表的形式傳遞 在這個函數中,我想知道是否某個特定的源已被更改(並且因此哪些源文件強制SCons重新構建該目標)。獲取哪些文件已被修改文件SCons構建器動作
所以如果「file.target」使用「file1.src」,並使用該調用Python函數「custom_build」一個自定義生成器「file2.src」建:
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()方法),你的Action「custom_build」被調用。其唯一的任務是從給定的來源重新創建目標,關於這一步驟何時發生的決定是在另一個層面。 – dirkbaechle
我明白你的觀點。但爲了重新創建目標,我需要知道哪些文件已被修改。假設目標是一個簡單的文件,列出了所有可用來重新創建目標的源文件。 SCons有這個信息,所以我的問題是如何得到它。 –
我找到併發布了適合我需求的解決方案。無論如何感謝您的回覆。 –