Boost logo

Boost-Build :

From: Dirk Griffioen (dirk_at_[hidden])
Date: 2007-09-05 02:22:16


Hi Phillip,

Thanks for the answers! I made some remarks below. If you have the time,
I'd like to hear your opinion.

Regards, Dirk

> You should mention which version you're using. That may change the
> answer to some questions. :-)
>
>
I use bjam 1.14 from boost_1_34
> Well, first off, it's not clear from your example why you're doing that
> instead of this:
>
That's my fault. The reasoin I would like to do this is that I want 2
libraries from the same source, but with a different define (please dont
ask why). So the first thing I tried was

lib a : a.cpp : <define>X ;
lib b : a.cpp : <define>Y ;

This I cannot do, because bjam complains about have the same source
(this is in the manual as well). So I went for

lib a : [ obj a :a.cpp ] : <define>X ;
lib b : [ obj b : a.cpp ] : <define>Y ;

But now the defines are not passed to the compiler (bjam -n show you
this) - dont know why. If I use the form I posted, it works - but it is
ugly since I have to repeat myself alot

So my question would be: how can I have something of the form, with more
than one object:

lib a : [ obj a :a.cpp ] [ obj b :b.cpp ] : <define>X ;
lib b : [ obj a :a.cpp ] [ obj b :b.cpp ] : <define>Y ;

instead of having to do

lib a : [ obj a :a.cpp : <define>X ] [ obj b :b.cpp : <define>X ] ;
lib b : [ obj a :a.cpp : <define>Y ] [ obj b :b.cpp : <define>Y ] ;

> It would behave the way you want that example to. That aside, there are
> a couple of options for this (that I know of). You can use a "project"
> target in that file like this:
>
Thanks for the suggestions! I like the local variable variant
>
>> *2) alias*
>>
>> I have 2 targets that are 90% alike, the only difference is they link
>> to 1 different library. Now I specify 2 targets which are basically
>> copies. Is it possible to define a general target once and specialize
>> it for the actual case:
>>
>> exe base : main.cpp lib-general ;
>>
>> alias exe-a : base lib-a ;
>> alias exe-b : base lib-b ;
>>
>> At the moment base is compiled/linked, this fails because some of the
>> symbols is in either lib_a or lib_b
>>
>
> I don't believe you can do that. You should be able to do a library
> that contains all the common sources and use it, though. I assume that
> the reason you want to do it like that is that there are more sources
> (or libs) and/or requirements that you don't want to repeat.
>
> lib exe-base : main.cpp lib-general ;
> exe exe-a : exe-base lib-a ;
> exe exe-b : exe-base lib-b ;
>
>
> Another way you could do it:
>
> for local name in a b
> {
> exe exe-$(name) : main.cpp lib-general lib-$(name) ;
> }
>
>
>
Thanks! I will look into these suggestions.
>
>
> With the version I have, you can, which is why I said you should tell us
> the version you're using. The way you would do it, though, would be:
>
Sorry - I guess I just forgot. I believe I have the last version:
Boost.Jam Version 3.1.14. OS=NT.

But when I try <os>LINUX, I get a

error: "LINUX" is not a known value of feature <os>
error: legal values: "NT"

Should I get something from svn?
>
>> *4) stage rename*
>>
>> I could'nt find this one:
>>
>> stage deliver : exe_a : <location>a <rename>base ;
>>
>> In other words, I'd like to give a name to an install target on
>> installation.
>>
>
> I can't help you with "stage" -- I always use "install". From my copy
> of stage.jam, it looks like you can use "<name>" to rename it when you
> use the "install" target.
>
Yep -- I saw that too, but when I tried it, something like

  stage sqlserver
    : the-exe-for-sqlserver
    : <location>$(ROOT)/var/tst/build-w-i386-sqlserver
    <install-dependencies>on
    <install-type>EXE
    <name>my-cool-exe
    ;

If have the same target 'my-cool-exe' (executable name - which is in the
manual) for several different databases. I would like to have the
buildprocess copying and renaming them properly, instead of a little
script some developer has to run after compiling - we will forget & get
confused.
> Phillip
> _______________________________________________
> Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost-build
>
>

-- 
CodeShop BV
Wenckebachweg 150-B
1096 AB Amsterdam
www.code-shop.com
+31 6 411 92 024


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