Boost logo

Boost-Build :

From: Larry Evans (jcampbell3_at_[hidden])
Date: 2002-04-02 09:59:06

David Abrahams wrote ( in ):

> If I invoke
> jam always-target
> It does indeed print "action output is ."

When I do that, I get 2 "action output is" outputs:
<-------- output ------------------
jam always-target
rule output is always-target
...found 1 target...
...updating 1 target...
test-rule always-target
action output is always-target
test-rule always-target
action output is always-target
...updated 1 target...
But I only want 1. Of course this is important in
real Jamfiles since many actions are compile or link
commands. I don't think this is how Jam is supposed
to work; so, obviously I'm missing something again.
Any suggestions about what that is?

The Jamfile producing the above output is:
<------ Jamfile ----------------

actions test-rule
echo "action output is" $(<)
touch test.out

rule test-rule
if ( ! $(gIN_LIB_INCLUDE) )
ECHO "rule output is" $(<) ;

test-rule always-target

One thing that is confusing about the above output
is the "rule output is always-target" comes first, and
then the "test-rule always-target" output. I would
expect that it would be the other way around, at least
for one of the "test-rule always-target" outputs. I realize
that this is probably because I'm just used to that being the way most scripts
and compiled programs work; however, I'm realizing
(starting with Rene's post about double inclusion) that
Jam does things differently. I assume this double inclusion
is done to avoid storing the whole jam file in an some sort
of jam AST and using a lot of memory. Is that right?



Boost-Build list run by bdawes at, david.abrahams at, gregod at, cpdaniel at, john at