|
Boost : |
From: Konstantin Litvinenko (Konstantin.Litvinenko_at_[hidden])
Date: 2007-09-18 03:39:21
Hello, David!
You wrote on Mon, 17 Sep 2007 15:31:18 -0400:
DA> A few days ago I started thinking about the implications of giving
DA> each Boost library a separate subtree of the repository, and it led me
DA> to some interesting places.
I think about this every time I see how you fight with current release
;)
Reorganazing boost structure to separate libs is very very good idea,
but require more work and rethinking, if you really want to get usefull
results. When I faced up with same king of problem in my organization where
I work, I came up with this:
SVN structure
repository
boost.config
1.0
....
1.1
....
trunk
build
include
boost
config
src
doc
tests
boost.filesystem
1.0
...
2.0
....
trunk
build
include
boost
filesystem
src
doc
test
Developer structure
C:\Work
same as SVN structure, but without unneeded library versions +
Jamfile
project-root.jam
boost-build.jam
>From user perspective boost will be used as monolithic library
#incude <boost/config.hpp>
#include <boost/filesystem/path.hpp>
because of usage requirments in boost.config and boost.filesystem Jamfiles.
The developer Jamfile should looks like this:
use-project /boost/config : boost.config/build//boost_config :
<version>1.0 ;
use-project /boost/config : boost.config/build//boost_config :
<version>1.1 ;
use-project /boost/filesystem : boost.config/build//boost_filesystem :
<version>1.0 ;
use-project /boost/filesystem: boost.config/build//boost_filesystem :
<version>2.0 ;
This require extending boost.build to understand such constructs but its not
evil its good. Such modification to use-project rule will give ability to
skip parsing not used libraries Jamfiles on early stage.
Having notion of external/internal dependencies will allow to build projects
such as
A(1.0) -internaly depends - B(1.0)-internaly depends-D(1.0)
|----externaly depends C(1.0)-internaly depends-D(1.1)
But external/internal dependencies is very (IMO) dangerous beast. Without
good so/dll analyzer tool it will be too far error prone, but anyway it will
be usefull.
What about IDE users? Having such structure will kill all at once :) Without
a tool that will generate IDEs project files this structure will force users
do a lot more work setting up dependencies, addition include directories and
so on. I have wrote such a tool and it was able to parse simple Jamfile and
generate VC 8.0 project and solution. But now I am on the way of total
refactoring :)
Thoughts?
With best regards, Konstantin Litvinenko.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk