|
Boost-Build : |
From: Malcolm Cifuentes (malcolm_cifuentes_at_[hidden])
Date: 2005-06-23 02:54:28
David Abrahams <dave_at_[hidden]> wrote in
news:ur7et1sq5.fsf_at_[hidden]:
> Malcolm Cifuentes <malcolm_cifuentes_at_[hidden]> writes:
>
>> Hi all,
>> is there any way to build an exe without bb actually trying to
>> build its
>> dependants but still link against them?
>>
>> Example:
>> normally bb will :
>> 1) find all dependant libraries
>> 2) build libraries if required
>> 3) pass libraries to linker
>>
>> I would like the following workflow:
>> 1. and 3.
>>
>
> How do you propose to link against a non-existent library?
>
> or, are you saying that the libraries exist but are out-of-date, and
> you want to link against them anyway?
>
> There's no way to do the latter with Boost.Build. What's the use case
> for this behavior?
>
use case: using bb in a continuous integration model.
Continuous integration means every one on a project uses the same
include/library repository (located conveniently on one or more servers:)
This means a user releases a library/header and source to the repository
when they decide it is ready and all other users receive the changes upon
next compile/link. The user only builds what they are working on and not
what they depend on. I've used this system implemented in make and it
works well.
The down side, is all dependancy management has been done by
mischievious means and it is error prone, hence my desire to try and use
bb to solve the problem.
So using this model, a user wishing to build an exe would:
a) execute bjam to build an exe in a directory
b) the library for the current directory is built if necessary
c) all dependant libraries not in the current directory are simply
linked against.
If a library does not exist one of two scenarios will occur:
a) A library will not be found as a dependant because it
is not found in the source repository and unresolved
symbols will be discovered during the link stage.
b) A library will be found as a dependant but not
physically exist so a link error will occur.
Releasing a library is a more complicated scenario, but a simple flow
would follow these steps:
a) user builds library for release (*)
b) user releases library, include ... to release structure
c) user rebuilds all libraries that require rebuilding due to there
changes
*- this is complex because it raises issues such as the user having
access to all the source repository with out requiring them to pull it
all into there work area. Of course the solution needs to work for
different platforms (i.e. win32, linux).
Any ways, I guess I will slowly wittle away at it. Its obvious from this
post though that I need to better define what I want bb to do for me.
thanks
mal
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