Boost logo

Boost-Build :

Subject: Re: [Boost-build] Newbie question to make rule
From: Steven Watanabe (watanabesj_at_[hidden])
Date: 2010-06-17 15:57:56


AMDG

Piotr Jachowicz wrote:
> Is there any way to force make action to be executed not in Jamroot
> location, but in specific directory?
>
> To be specific, I have following structure:
>
> Jamroot
> |
> |---bin
> |---lib
> |---program
>
> Compiling lib requires to invoke "schemagen schema.imp" which produces
> two files: schema.cxx and schema.sch. The former should be compile
> with other lib sources (and library moved ino bin/), the latter should
> copied into bin directory. It is trivial with traditional make, but
> I've failed to manage it with bjam. The problem is that "schemagen"
> application produces output in current directory. I've tried to create
> in lib directory Jamfile containing
>
> actions schemagen
> {
> schemagen $(>)
> }
>
> make schemagen.sch : schemagen.imp : @schemagen ;
>
> lib schema
> : [ glob *.cpp ]
> [ glob *.cxx ]
> ;
>
> But when I invoke bjam from Jamroot level, schemagen action produces
> files schema.cxx and schema.sch in *current directory* (the same
> directory where Jamroot is located). How to force action to be
> executed in /lib directory?
>

What about:

actions schemagen
{
    cd $(>:D)
    schemagen $(>:D=)
}

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