header 更改后未重建 SCons StaticLibrary

SCons StaticLibrary not rebuilt after header change

在此示例中,foo.c 包括 foo.h。 当 foo.h 改变时,foo.c 重建为 foo.o,但 libfoobar.a 不是。

Import('env')

penv = env.Clone()
penv.Append(CPPPATH=['./'])

penv.StaticLibrary('foobar',[
        'foo.c',
        'bar.c',
    ],
)

有什么提示吗?

在 SCons 中,决策程序 决定目标是否需要重建。默认的判定器是 MD5。这意味着即使重建了一个目标文件,如果它的 MD5 没有改变,那么包含/链接到该对象的任何内容都不需要重建。这与 Make 形成对比,Make 使用文件系统时间戳来决定是否重建目标。

因此,如果您的头文件更改是空格或其他无关紧要的内容,则依赖项树中目标文件之上的任何内容都不需要重建。