Boost logo

Boost-Build :

From: Vladimir Prus (ghost_at_[hidden])
Date: 2004-12-14 03:23:29


On Monday 13 December 2004 16:09, TEMPLIE Cédric wrote:
> Hi,
>
> I do not understand all the boost build system.
> I have a kind of structure like that (This is a global view, a developer
> may have only the Project2 and Build view):
>
> +--- project-root.jam
> +--- JamFile
> +--- Project1/ #Nothing to compile in this project, only copy files to
> Build dir
>
> +--- JamFile
> +--- lib/ (contains libraries)
> +--- include/ (contains headers)
> +--- Project2/
>
> +--- JamFile
> +--- sources/ (contains sources)
>
> +--- ProjectX/
>
> +--- JamFile
> +--- sources/ (contains sources)
>
> +--- Build/
>
> +--- include/ (contains header files)
> +--- lib/ (contains libraries)
> +--- bin/ (contains dll and exe)
>
> All of my build results should go to the appropriate directory of the
> build directory.
>
> I need to define some variables (BIN_ROOT, INCLUDE_ROOT, LIB_ROOT),
> where have I to put these variable definition (in project-root.jam, or
> JamFile of the root) ?

If you're using 2.0-m10, you need to add "path-constant" invocation to
project-root.jam.

path-constant BIN_ROOT : whatever ;

If you're using CVS version, you can add this either to project-root.jam orto
Jamfile. In fact, you better have one file called Jamroot at top-level, and
don't bother with difference between project-root.jam and top-level Jamfile.

> Each project look in Build/include for headers, Build/lib for libraries
> and in Build/bin for dlls.
>
> Project2 needs Project1 to compile.
> What I want is, when I build Project2, it builds Project1 (Building
> Project1 is copying files and libs in the Build dir) then Project2 can
> be built.

project Project2
: requirements <dependency>..//Project2
;

might be enough?

> If Project2 build succeed, I copy headers in the Build/Include directory.
>
> Moreover, if the developer who want to build Project2 does not have the
> Project1 directory, there is a mistake. So I want to specify that
> Project1 is /Project1 when the directory is here, and is only the
> library in Build/lib when the Project1 directory is undefined on the
> developer computer.

You can check for directory existence with the glob rule.

Jamfile:

if [ glob ../Project1 ]
{
.........
}

The argument to 'glob' is a pattern relative to Jamfile location.

HTH,
Volodya

 


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