Boost logo

Boost-Build :

From: Vladimir Prus (ghost_at_[hidden])
Date: 2004-12-23 07:31:47


On Thursday 23 December 2004 15:13, quarendont wrote:

> I'm trying to use the stage rule. So in my Jamfiles (say in
> src\exe1\Jamfile) I have
>
> exe exe1 : $(SOURCES) ;
> stage bin : exe1 ;
>
> This gets me a bin directory in the src\exe1 directory with a copy of
> exe1.exe in it. I want to simply rebase that to make it come out in
> the projectroot\dist directory in much the same way that setting the
> build-dir property does for the .obj files.
>
> I've tried setting the <location> property on the project rule in the
> Jamfile in the projectroot\ directory to dist/bin, and this almost
> works. However all stage rules end up putting files in the same
> directory, I can't put some files in bin, and some in lib and so on.
> Clearly I could just put <include>../../dist/bin on the stage rules,
> but I was hoping that there would be a way of using the stage name
> (i.e the "bin" in "stage bin : ...") bit taking it relative to a
> directory other that the current project directory.
>
> Is there an accepted way to do this?

The way I do it it to have one top-level "stage" rules, one which installs
exes and another which installs libraries. If you want to specify stage in
each project, you can also define two targets.

If that's no convenient enough, you can get away by putting this to your
top-level Jamfile (if using m10, this must be in project-root.jam):

path-constant TOP : . ;

rule install ( exes * : libs * )
{
stage install_exe : $(exes) : <location>$(TOP)/bin ;
stage install_lib : $(exes) : <location>$(TOP)/lib ;
}

and using this "install" rule in every Jamfile.

HTH,
Volodya

 


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