Boost logo

Boost-Build :

From: Phillip Seaver (phil_at_[hidden])
Date: 2007-03-27 11:13:23


Dario Senic wrote, on 3/26/2007 9:10 AM:
> Hello,
>
> I'm starting to use boost build and I have the following problem:
>
> I have a Jamfile in which I specify one target like this:
>
> exe MyExe: [ glob ./Source/*.cpp ] ;
>
> Now, I want to specify install rule for my target but I want install
> location to be different for different build variants. For example, when
> building debug variant I want location to be /bin/debug and for release
> variant /bin/release. The first idea was to add something like this into
> Jamfile:
>
> install bin/debug: MyExe: <variant>debug ;
> install bin/release: MyExe: <variant>release;
>
> But this doesn't do things exactly as I would like to. If I want to
> build debug version with "bjam debug" command, because of the second
> install rule release variant is also built. I want to avoid that. So
> second solution I came up with was to parse command line arguments, like
> this:
>
> import modules ;
> local argv = [ modules.peek : ARGV ] ;
>
> if debug in $(argv)
> {
> install bin/debug: MyExe: <variant>debug ;
> }
> if release in $(argv)
> {
> install bin/release: MyExe: <variant>release;
> }
>
> But this solution is not "clean" as I would like to. For example, if I
> want to build default variant with "bjam" command (with no debug/release
> parameters) I have to add more logic in the code above. I would like to
> avoid that because it is repetitive task I have to make for every project.
>
> Does anybody know some better solution?
> Many thanks in advance.
>
>

Maybe something like this?

install dist : MyExe
    : <variant>release:<location>bin/release
<variant>debug:<location>bin/debug
;

As far as I know, the "dist" above is just a name -- it has nothing to
do with where the files end up.

Hope this helps,

Phillip


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