Boost logo

Boost :

From: Larry Evans (jcampbell3_at_[hidden])
Date: 2002-01-28 13:02:31


Vladimir Prus wrote:

> Hi Larry,
>
> Larry Evans wrote:
> > > I'm just starting to use jam; however, it's putting the target files in a
> > > target directory that I don't want.
> >
> > [snip]
> >
> > > I want the files to be in:
> > > bin/gcc/debug/runtime-link-dynamic/
> > > instead of:
> > > bin/test_lje.exe/gcc/debug/runtime-link-dynamic/
> > > How do I get jam to do this?
>
> Why do you want it?

see below

>
>
> >
> > I modified boost-base.jam as follows:
> > [snip]
> >
> > <----------- *vc-diff* ---------------
> > *** boost-base.jam 2002/01/26 01:19:30 1.1
> > --- boost-base.jam 2002/01/26 01:35:06
>
> Speaking *only for myself*, I'd find unified diff a big deal easier to read.
>
> > and this worked for the simple example posted previously.
> > Would anybody please let me know if they see any problem with this change?
>
> Yes. Main target name appear in target path for a reason. Consider:
>
> exe test_lje.exe : test_lje.cpp ;
> exe test_lje_d.exe : test_lje.cpp : <define>DEBUG_EVERYTHING ;
>
> If main target name is not in target path, objects compiled with different
> settings of DEBUG_EVERYTHING will be placed in the same directory.
> BTW, this behavour will somewhat change in the new build system, but still
> build system will take care of target path. Why would you want to change the
> logic?

I was hoping that test_lje_d.exe would go in:

      bin/gcc/DEBUG_EVERYTHING/runtime-link-dynamic/

or something similar. In other words, everything that's compiled with the same
options and compiler goes into a separate directory. This allows writing test drivers
such as:

       lib/<my_lib>/tests/correctness/driver1/main.cpp
       lib/<my_lib>/tests/correctness/driver2/main.cpp

and then, if performance instead of correctness is to be evaluated:

       lib/<my_lib>/tests/performance/driver1/main.cpp
       lib/<my_lib>/tests/performance/driver2/main.cpp

then maybe the jamfiles in correctness subdirectory would indicate the appropriate
compiler options while those in performance would do likewise. Then, since the driver1
and driver2 jamfiles would probably include something from:
       lib/<my_lib>/src
the files from src would be compiled with either the correctness (i.e. debug options) and
those from performance would be compiled with optimzation for speed. In other words, they'd
be put in either:

      bin/gcc/correctness/runtime-link-dynamic/lib/src/class1.o
      bin/gcc/correctness/runtime-link-dynamic/lib/src/class2.o
or:
      bin/gcc/performance/runtime-link-dynamic/lib/src/class1.o
      bin/gcc/performance/runtime-link-dynamic/lib/src/class2.o
This way, both correctness mains can share the correctness lib/src/*.o.
and both performance mains can share the perofmance /lib/src/*.o.

Of course, maybe I'm missing something. If so, please help me find it :).


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk