Boost logo

Boost-Build :

From: quarendont (tomq_at_[hidden])
Date: 2004-12-23 07:13:46


I'm having difficulty using the stage rule to build a distribution
directory structure.

I have a project with different DLLs and executables build in
different subprojects, and I'm trying to end up with a single
directory structure containing all of the final build artifacts as
they would appear once installed on the user's machine.

I.e what I'm trying to end up with is

projectroot\
build\
all .obj files and so on go here
dist\
bin\
executable files end up here
lib\
and so on.
doc\
etc\
src\
source files and Jamfiles are in subdirectoris under here.

Getting the .obj files to come out in the build\ directory is easy, I
just set the build-dir property on the Jamfile in the proejctroot\
directory.

Getting a copy of the DLLs and EXEs to end up in the dist\bin
directory is harder.

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?

Many thanks.

 


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