Boost logo

Boost :

From: David Abrahams (abrahams_at_[hidden])
Date: 2001-06-05 12:09:49


----- Original Message -----
From: <williamkempf_at_[hidden]>

> Some further questions...
>
> The documentation talks about a subproject rule, while the system
> seems to use a SubDir rule with different syntax. Can you fully
> explain how SubDir is used?

I just haven't written the subproject rule, but it would go something like
this:

rule subproject
{
   SubDir TOP [ split-path $(<) ] ;
}

In other words, it's just a more-user-friendly way of invoking SubDir, which
is documented here:

  http://public.perforce.com/public/jam/src/Jamfile.html

and here:

  http://public.perforce.com/public/jam/src/Jambase.html

The main reason that SubDir is not equivalent to subproject AFAICT is that
Jam does not (yet) support a uniform ability to split unix-style paths (IOW,
on MacOS, paths are separated in Jam by ':' and only by ':'). So the
developer (Christopher Siewald) had to specify all paths with $(SLASH) or by
using separate elements of a list as they did for SubDir.

Mr. Siewald seemed to be warm to the idea of integrating support for uniform
interpretation of Unix-style paths, if someone would implement it. I think
the biggest problem is that it would need to support VMS and I don't know
enough about VMS path syntax to be sure that I'm not breaking something. Any
VMS experts out there?

> SubInclude seems to require that subprojects be in subdirectories of
> the main project. This means that if I want to build thread_test as
> a subproject of the Boost.Threads library I have to move the
> directory

Sorry; I can't picture your directory structure. Could you supply a diagram
of what you're describing? In any case, it seems to me that Boost would be
the main project and everything else would be a subproject.

> which I *think* violates the latest Boost directory
> structure guidelines (we need to document this soon... it's hard to
> find e-mails on this in the archives). Do you expect test programs
> and example programs to be top level projects?

No, I expect them to be targets within subprojects.

> How should jamfiles for examples and test programs link to the static
> libraries generated? If they are subprojects a line such as
> <lib>../libraryname
> works nicely and is what you used for Y in the example, but how would
> this work for top level projects?

I hope I've already cleared that question up above; if not, please ask
again.

> Basically, I've got jamfiles that create the static threads.lib and
> the test_thread.exe for msvc, but I've had to re-arrange the
> directories and make test a subproject of src, which seems fragile
> for Boost distributions. If you don't follow what I'm asking here I
> can upload the Boost.Threads library with the jamfiles.

That might be neccessary, but let's first see if we can clear things up in
email.

-Dave


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