|
Boost-Build : |
From: Steven Watanabe (watanabesj_at_[hidden])
Date: 2008-08-12 15:46:24
AMDG
Ray Lambert wrote:
>> As for 'files modified by external conditions', I believe Boost Build
>> assumes it knows about all dependencies between targets. To give it that
>> have you tries modeling your tools using Boost Build target or generator?
>>
>
> I've tried a few things like this but I haven't successfully gotten it to
> work. It may just be due to me not understanding the internals enough to
> "press the right buttons" (so to speak).
>
> I need to run an external tool to "sense" the external condition and I
> haven't found a way to directly translate that into something that effects
> what gets built (i.e. build foo if it's out of date OR if condition X is
> true).
>
Would something like this solve your problem?
import modules ;
actions quietly do-nothing
{
}
# creates a target which will be updated iff condition
# evaluates to true.
rule condition ( name : condition ? )
{
if ! $(condition)
{
# create a blank target which is always up to date
alias $(name) ;
}
else
{
# create a target which will always be out of date
# because the updating action never creates the
# corresponding file
make $(name) : : @do-nothing ;
}
}
# Note that this test can be anything
if --rebuild-foo in [ modules.peek : ARGV ]
{
rebuild-foo = true ;
}
condition foo-cond : $(rebuild-foo) ;
exe foo : a.cpp : <dependency>foo-cond ;
In Christ,
Steven Watanabe
Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk