|
Boost : |
From: John Maddock (jm_at_[hidden])
Date: 2003-06-07 06:25:15
Folks,
I've put together a small tool for managing boost dependencies called bcp
(for boost copy).
The bcp utility is a tool for extracting subsets of Boost, it's useful for
Boost authors who want to distribute their library separately from Boost,
and for Boost users who want to distribute a subset of Boost with their
application.
Examples:
~~~~~~~
bcp scoped_ptr /foo
Copies boost/scoped_ptr.hpp and dependencies to /foo.
bcp boost/regex.hpp /foo
Copies boost/regex.hpp and all dependencies
including the regex source code (in libs/regex/src) and build files (in
libs/regex/build) to /foo. Does not copy the regex documentation, test, or
example code.
bcp regex /foo
Copies the full regex lib (in libs/regex) including
dependencies (such as the boost.test source required by the regex test
programs) to /foo.
bcp regex config build /foo
Copies the full regex lib (in libs/regex) plus
the config lib (libs/config) and the build system (tools/build) to /foo
including all the dependencies.
Syntax:
~~~~~
bcp --list [options] module-list
Outputs a list of all the files in
module-list including dependencies.
bcp [options] module-list output-path
Copies all the files found in
module-list to output-path
Options:
~~~~~~
--boost=path
Sets the location of the boost tree to path.
--scan
Treats the module list as a list of (probably non-boost) files to scan
for boost dependencies, the files listed in the module list are not copied
(or listed), only the boost files upon which they depend.
--cvs
Only copy files under cvs version control.
--unix-lines
Make sure that all copied files use Unix style line endings.
module-list:
~~~~~~~~
When the --scan option is not used then a list of boost files or library
names to copy, this can be:
1.. The name of a tool: for example "build" will find "tools/build".
2.. The name of a library: for example "regex".
3.. The title of a header: for example "scoped_ptr" will find
"boost/scoped_ptr.hpp".
4.. The name of a header: for example "scoped_ptr.hpp" will find
"boost/scoped_ptr.hpp".
5.. The name of a file: for example "boost/regex.hpp".
When the --scan option is used, then a list of (probably non-boost) files to
scan for boost dependencies, the files in the module list are not therefore
copied/listed.
output-path:
~~~~~~~~
The path to which files will be copied (this path must exist).
Dependencies
File dependencies are found as follows:
C++ source files are scanned for #includes, all #includes present in the
boost source tree will then be scanned for their dependencies and so on.
C++ source files are associated with the name of a library, if that library
has source code (and possibly build data), then include that source in the
dependencies.
C++ source files are checked for dependencies on Boost.test (for example to
see if they use cpp_main as an entry point).
HTML files are scanned for immediate dependencies (images and style sheets,
but not links).
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
As usual comments etc are most welcome, also should a utility/tool such as
this go through the review process, before eventually living under
tools/bcp?
The source is available from: www.regex.fsnet.co.uk/bcp.zip
This requires the latest boost cvs source to build, so there is also a file
containing bcp's dependencies (obviously produced using bcp!):
www.regex.fsnet.co.uk/bcp_deps.zip
Regards,
John Maddock.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk