Version 4 (modified by 13 years ago) ( diff ) | ,
---|
Header Modularization
Goals/Objectives/Needs/Wants
- Single include path (-I...). Without a single include path, builds, IDE's, and other tools become unmanageable.
- Easy checkout, commit, merge, switch, and other source control operations.
- Works well regardless of build engine, not just with bjam or CMake.
- Doesn't break users existing scripts, IDE setups, etc. OK to break developers and release managers scripts.
- Easy library subset creation. (Ignoring the dependency problem; that's orthogonal.)
- Minimizes developer mistakes like failure to merge, commit, all files that changed.
- All maintenance occurs withing the library's libs/... directory. (Subset of (6), but important enough to list separately.)
- Easy scripting (inspect, unmerged changes, release management, etc.) ((7) goes a long way to achieve this.)
- Works well with installers.
- Supports test-on-demand and test-library-against-different-branch.
Possible Approaches
- Status quo.
- svn:externals.
- Copy header directories to ../../boost via post-svn step.
- Move header directories to ../../boost via post-svn step.
- Forwarding headers (in svn).
- Forwarding headers via post-svn step.
- Symlinks from root/boost/... to boost-root/libs/... via post-svn step.
- Hard links from root/boost/... to boost-root/libs/... via post-svn step.
- Move (permanently) each library's root/libs/libname contents into root/boost/libname for the library.
Note:
See TracWiki
for help on using the wiki.