-1

In this example, foo.c includes foo.h. When foo.h is changed, foo.c is rebuild to foo.o, but libfoobar.a is not.

Import('env')

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

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

Any hints?

Felipe Lavratti
  • 2,887
  • 16
  • 34

1 Answers1

2

In SCons, a decider is what determines if a target needs to be rebuilt. The default decider is MD5. This means that even if an object file is re-built, if its MD5 doesn't change, then nothing that includes / links against that object needs rebuilt. This is in contrast to Make, which uses filesystem timestamps to decide whether or not to rebuild a target.

So, if your header file change was whitespace or otherwise insignificant, nothing above the object file in the dependency tree needs rebuilt.

Jonathon Reinhart
  • 132,704
  • 33
  • 254
  • 328