[Scons-users] when to use depends and when to use requires

Mats Wichmann mats at wichmann.us
Thu Nov 10 10:50:50 EST 2022


On 11/10/22 05:35, daggs wrote:
> Greetings,
> 
> I still don't know what are the proper guidelines to use Depends or Requires.
> I had an example of a target a and target b, target a depends on b, b creates a few files, one of them is needed for target a. I used Depends here.
> depending target a on target b didn't enforced the proper order, adding the relevant file to the dep list didn't worked, however, when I changed it into Requires,
> the order was enforced.
> from that I deduce that for code files which I need to use as part of another target I should use Requires while for the rest, I should use Depends.
> 
> am I right?

I don't know if we explain it well enough - not sure I fully understand 
either.

At the surface level (someone please jump in and correct me here):

Requires() is for specifying order. It does not establish dependencies. 
If something else already decides A and B will be built, then having A 
Require B means SCons will decide to build B before A.  Since it's not a 
dependency, rebuilding B doesn't automatically trigger rebuilding A.

Depends() is for declaring a dependency to SCons that it won't otherwise 
decect by itself. It says nothing about order, because that's something 
SCons gets to decide, based on its evaluation of the dependency graph. 
In many cases, of course, a dependency *does* end up acting as a kind of 
ordering - but it's not certain.

Looking at the manpage I don't think I'm actually saying anything 
different that it does.



More information about the Scons-users mailing list